1編寫M函式,用於計算兩個矩陣的積(兩個矩陣作為輸入

2021-08-20 18:39:26 字數 5447 閱讀 3568

1樓:

function c=ji(a,b)

[m n]=size(a);

[m n]=size(b);

if n~=m

error('前者列數與後者行數不同,無法相乘!');

else

for p=1:m

for q=1:n

for t=1:n

d(p,q,t)=a(p,t)*b(t,q);

endc(p,q)=sum(d(p,q,:));

endendend

2樓:

matlab概論

matlab是世界流行的優秀科技應用軟體之一。具有功能強大(數值計算、符號計算、圖形生成、文字處理及多種專業工具箱)、介面友好,可二次開發等特點。在國內外,已有許多高等院校將其列為本科生、研究生和博士生必須掌握的基本技能。

1起源與發展

自2023年由美國mathworks公司推向市場以來,先後釋出了多個版本,2023年釋出4.0版,2023年釋出4.2c版,2023年釋出5.

0版,2023年釋出5.1版,2023年釋出5.3版,2023年釋出6.

0版,目前釋出的為6.5版。

2基本組成

matlab主要由matlab主程式、simulink動態**系統和matlab工具箱三大部分組成。其中matlab主程式包括matlab語言、工作環境、控制代碼圖形、數學函式庫和應用程式介面五個部分;simulink是用於動態系統**的互動式系統,允許使用者在螢幕上繪製框圖來模擬系統並能動態地控制該系統;工具箱則是matlab的基本語句編寫的各種子程式集和函式庫,用於解決某一方面的特定問題或實現某一類的新演算法,是開放的,可以根據需要擴充。

3通用命令

通用命令是在matlab命令視窗中直接鍵入並執行。常見的如下表所列。

名稱 功能說明

clear 清除記憶體中所有的或指定的變數和函式

cd 顯示和改變當前工作目錄

clc 擦除matlab工作視窗中所有顯示的內容

clf 擦除matlab工作視窗中的圖形

dir 列出當前或指定目錄中的檔案清單

disp 在執行中顯示變數或文字內容

echo 控制執行的文字命令是否顯示

hold 控制當前的圖形視窗物件是否被重新整理

home 擦除命令視窗中的全部內容

pack 收集記憶體碎片以擴大記憶體空間

quit 關閉並退出matlab

type 顯示所指定檔案的全部內容

exit 退出matlab

4幫助檔案

matlab為使用者提供了非常詳盡的幫助檔案,最常見的幫助命令是help,直接輸入help則列出全部資訊,help後加物件則提示物件幫助資訊。

matlab的基本矩陣運算

1 簡單矩陣輸入

matlab最基本、也是最重要的功能就是進行實數矩陣或者複數矩陣的運算。由於向量可作為矩陣的一行或者一列,標量(一個數)則可以作為只含有一個元素的矩陣,故向量和標量都可以作為特殊矩陣來處理。matlab的操作和命令對於矩陣而言,和我們平時使用的形式很相似,但它還有自己的一些規定。

一、鍵盤輸入

對於比較小的簡單矩陣,可以使用鍵盤直接輸入,例如:

a=1;b=2;c=3

x=[5 b c;a*b a+c c/b]

x =5.0000 2.0000 3.0000

2.0000 4.0000 1.5000

矩陣生成不但可以使用純數字,也可以使用變數。矩陣的元素直接排列在方括號內,每行內的元素使用空格或者逗號分開,行與行之間使用分號隔開。大的矩陣可以分行輸入,用回車鍵代替分號,這和我們平時使用的矩陣形式很相近。

例如a=[1 2 3

4 5 6]

大部分的試驗資料使用上面的形式給出的,在處理試驗資料中,可以簡單的將資料前後加入左右括號,就可以得到矩陣的表示。這種處理可以在指令碼檔案中進行。

二、矩陣生成

matlab提供了很多生成和操作矩陣的函式。下面給出幾個建立矩陣的例子。

如果是線性等間距格式生成矩陣,可以使用from:step:to方式。from、step、to分別表示開始值、步長和結束值。例如

a=1:2:10

a =1 3 5 7 9

還可以使用linspace命令,如:

a=linspace(1,10,5)

a =1.0000 3.2500 5.5000 7.7500 10.0000

linespace的三個參數列示開始值、結束值和資料個數。資料個數可以省略,預設值為100。

在畫bode圖等應用中,需要使用對數等間隔的資料,可以使用logspace命令生成。logspace和linspace的引數相同,只是結果不同。

2 矩陣運算

矩陣運算是matlab的基礎,matlab的矩陣運算功能十分強大,並且運算的形式和一般的數學表示十分相似。

一、矩陣的轉置

矩陣的轉置用符號 ’

a=[1 2 3;4 5 6]

a =1 2 3

4 5 6

b=a'

b =1 42 53 6如果矩陣a為複數矩陣,則a’為共軛轉置。

a=[1 2;4 5], d=a+a*i,c1=d',c2=conj(d),

matlab程式設計:給定矩陣a和b,請寫一函式計算兩矩陣的乘積,a和b作為該函式的輸入引數,要求要判斷兩個矩陣是

3樓:匿名使用者

第一樓的程式錯誤,沒有提示輸入a,b矩陣!

我把程式修改後完全能實現,執行時提示輸入a,b矩陣,且能得結果!

程式原始碼如下:

function c=bicu(a,b)

a=input('a matrix=') ;

b=input('b matrix=');

[m1,n1]=size(a);

[m2,n2]=size(b);

if n1==m2

c=zeros(m1,n2);

for i=1:m1

for j=1:n2

for k=1:n1

d=a(i,k)*b(k,j);

c(i,j)=c(i,j)+d;

endend

endelse disp(['matrix a and b could not be multiplied']);

end儲存為bicu.m後即可執行!

希望能對你有幫助!

4樓:匿名使用者

function c=bicu(a,b)

[m1,n1]=size(a);

[m2,n2]=size(b);

if n1==m2

c=zeros(m1,n2);

for i=1:m1

for j=1:n2

for k=1:n1

d=a(i,k)*b(k,j);

c(i,j)=c(i,j)+d;

endend

endelse disp(['matrix a and b could not be multiplied']);end

5樓:匿名使用者

size_a = size(a);

size_b = size(b);

if (size_a(2) == size_b(1))disp(['matrix a and b could be multiplied']);

else

disp(['matrix a and b could not be multiplied']);end

c語言:輸入一個2行3列的矩陣a和一個3行4列的矩陣b,計算兩矩陣的乘積

6樓:曉龍修理

解題過程如下:

#include ;#include

#define l 2,#define m 3,#define n 4

}printf("\n");}return;}int main(void)};

double b[m][n] = };double c[l][n] = };int i = 0, j = 0, k = 0;

printf("\ngenerate a[%d][%d]:\n", l, m);

genarr(&a[0][0], l, m);

printmatrix(&a[0][0], l, m);

printf("\ngenerate b[%d][%d]:\n", m, n);

}}printf("\ncalc c[%d][%d]:\n", l, n);

性質:矩陣相乘最重要的方法是一般矩陣乘積。它只有在第一個矩陣的列數(column)和第二個矩陣的行數(row)相同時才有意義  。

一般單指矩陣乘積時,指的便是一般矩陣乘積。一個m×n的矩陣就是m×n個數排成m行n列的一個數陣。由於它把許多資料緊湊地集中到了一起,所以有時候可以簡便地表示一些複雜的模型,如電力系統網路模型。

當矩陣a的列數(column)等於矩陣b的行數(row)時,a與b可以相乘。矩陣c的行數等於矩陣a的行數,c的列數等於b的列數。乘積c的第m行第n列的元素等於矩陣a的第m行的元素與矩陣b的第n列對應元素乘積之和。

當提及“矩陣相乘”或者“矩陣乘法”的時候,並不是指代這些特殊的乘積形式,而是定義中所描述的矩陣乘法。在描述這些特殊乘積時,使用這些運算的專用名稱和符號來避免表述歧義。

把給定的圖轉為鄰接矩陣,即a(i,j)=1當且僅當存在一條邊i->j。令c=a*a,那麼c(i,j)=σa(i,k)*a(k,j),實際上就等於從點i到點j恰好經過2條邊的路徑數(列舉k為中轉點)。

類似地,c*a的第i行第j列就表示從i到j經過3條邊的路徑數。同理,如果要求經過k步的路徑數,只需要二分求出a^k即可。

7樓:匿名使用者

#include

int main()}}

for(x=0;x<2;x++)

return 0;}

用c語言實現兩個矩陣相乘怎麼做?

8樓:灩麗

1、程式執行輸入資料時,第一行為a矩陣的行列數和b矩陣的行列數,接著分別輸入a、b兩個矩陣的值。

2、首先,定義6個整型變數,儲存a、b矩陣的行和列,以及控制迴圈的變數,k則用於實現矩陣的乘法。

3、接著,定義三個整型二維陣列,儲存a、b和c矩陣的各元素。

4、輸入三個矩陣的行數和列數,儲存在變數a、b、c中。

5、輸入矩陣a的各元素,儲存在陣列x中。

6、輸入矩陣b的各元素,儲存在陣列y中。

7、將二維陣列z的各元素,初始化為0。

8、用兩層for迴圈,控制矩陣的乘法,並輸出乘法所得的結果。

9、計算a矩陣和b矩陣的乘法,結果儲存在陣列z中。

10、最後,輸出乘法所得的結果,即輸出z陣列中的所有元素。

11、執行程式,輸入矩陣a和b的行數和列數,以及a矩陣和b矩陣的所有元素,電腦就會計算出乘積c矩陣的所有元素,並輸出c矩陣。

matlab編寫m檔案求兩矩陣的乘法有問題請高手指點

很高興為您解答這個問題,matlab中兩個矩陣是可以直接相乘的,比如c a b。如果要自己程式設計來實現,可以這樣做。function c mutiply matrix a,b m1,n1 size a m2,n2 size b if n1 m2 c return c endc zeros m1,n...

編寫fun函式函式的功能是計算,編寫一個fun函式,函式的功能是計算1 2 n

include int main printf the result is d n sum return 0 執行結果如下專 屬 編寫函式fun s 1 1 1 2 1 1 2 3 1 1 2 3 n include include float fun int n return s main 編寫函...

兩個矩陣相乘的秩兩個矩陣乘積的秩滿足的不等式有哪些

定理 如果ab 0,則秩 a 秩 b n。證明 將矩陣b的列向量記為bi。ab 0,所 abi 0,bi為ax 0的解。ax 0的基礎解系含有n 秩 a 個線性無關的解,秩 b n 秩 a 即秩 a 秩 b n。ps 這個結論在證明或者選擇填空中都經常用到,需要記住並應用 兩種證明方法。第一種是用分...