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

2021-03-28 01:53:56 字數 3922 閱讀 6845

1樓:匿名使用者

很高興為您解答這個問題,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,n2);

for i=1:m1

for j=1:n2

for k=1:n1

c(i,j)+=a(i,k)*b(k,j);

endend

endreturn c;

end希望可以幫助你,祝學習進步!

2樓:時砂之王的

matlab中不是可以直接進行矩陣計算

關於matlab 建立函式m檔案 怎麼實現兩個矩陣相乘?

3樓:龔訪雁

你的意思是自己編寫矩陣乘法吧,否則直接呼叫matlab得 * 函式就得了

驗證成功,可以執行

請求matlab大神編輯程式! 編寫一個函式,得到兩個矩陣a和b的相乘的結果,函式的形式必須是

4樓:匿名使用者

函式檔案matmult_20150101.mfunction matrixproduct = matmult_20150101(a, b)

[m,n] = size(a);

[x,y] = size(b);

if(n~=x)

disp(['矩陣維度不匹配'])

return

endmatrixproduct = zeros(m,y);

for i=1:m

for j=1:y

for k=1:n

matrixproduct(i,j) = matrixproduct(i,j) + a(i,k)*b(k,j);

endend

end呼叫示例

>> a=[1 2 3;4 5 6];

>> b = [1 1 1 1;2 3 4 5];

>> c = [1 1 1 1;2 3 4 5;3 4 5 6];

>> matmult_20150101(a, b)矩陣維度不匹配

>> matmult_20150101(a, c)ans =

14    19    24    29

32    43    54    65

>> a*c  % 直接計算

ans =

14    19    24    29

32    43    54    65

請問,如何在matlab中編寫程式實現求兩矩陣a*b,a.*b?

5樓:匿名使用者

首先可以求點乘,維數肯定要相同;

「.*」和「*」的區別:

在進行數之間的運算時「.*」和「*」是沒有區別的,都是表示普通的乘法運算。例:m = 2,n = 3,m.*n = 6, m*n = 6。

在進行矩陣之間的運算時「.*」和「*」的意義就有所不同了。假設a,b表示兩個矩陣,a*b表示矩陣a與矩陣b進行矩陣相乘,a.

*b表示矩陣a中的元素與矩陣b中的元素按位置依次相乘,得到的結果將作為新矩陣中相同位置的元素。

matlab 中用一個特殊的符號來區分矩陣運算和陣列運算。在需要區分兩者不同的時侯,把點置於符號前來指示這是一個陣列運算(例如, .*)。

也就是說在matlab裡直接使用「*」和「.*」這兩個符號就可以了。

matlab編寫m檔案,至少採用兩種方法,將a矩陣轉換為b矩陣 10

6樓:匿名使用者

% 方法du一

zhidao

>> a=[1 2 3 4;5 6 7 8];

>> b = zeros(size(a));

>> b(:,1:end) = a(:,end:-1:1)b =4     3     2     18     7     6     5

% 方法二版權

>> a=[1 2 3 4;5 6 7 8];

>> b = zeros(size(a));

>> for i=1:size(a,1)

for j = 1:size(a,2)

b(i,j) = a(i,size(a,2)+1-j);

endend

>> b

b =4     3     2     18     7     6     5

matlab編寫m函式檔案,要求具有兩個輸入變數:a和n,對於輸入矩陣a,找出a中大於或等於n的元素值並顯示

7樓:匿名使用者

clear,clc

a=input('輸入矩陣a=');

n=input('n=');

j=1;

for i=1:length(a)

if a(i)>n

b(j)=a(i)

j=j+1;

endend

matlab題目:編寫一個函式檔案,用於求兩個矩陣的乘積和點乘,然後在命令檔案中呼叫該函式。。。寫出過程 25

8樓:宋

function f=work(a,b)

f=a.*b;

就可以啦!只不過你m檔案存名為work。m

9樓:匿名使用者

在matlab中沒有這麼麻煩。假如有兩個矩陣a,b的話,點乘直接用a.*b指令就可以了,乘積直接用a*b

在matlab建立函式m檔案 ,用三重迴圈計算兩個矩陣相乘

10樓:註冊時嚇一跳

我知道的復m檔案的建立有兩種方法制:

1、開啟matlab,點bai

擊新建按鈕du,在裡zhi面寫上**,點dao儲存就可以了。

2、新建一個記事本檔案,寫上**,儲存的時候字尾名改為.m,儲存好的檔案就是m檔案了。

至於你說的三重迴圈計算兩個矩陣相乘,我不知道你的意思是什麼,在matlab裡面兩個矩陣相乘,只要滿足矩陣乘法的條件,直接乘就行了,比如:

a=[1,2,3;4,5,6;7,8,9]b=[9,8,7;6,5,4;3,2,1]在***mand視窗直接輸入a*b,敲回車,就會得到答案了。

11樓:高等數學答案

兩個矩陣直接乘就行了,用不著迴圈吧。如果是每個元素相乘,用點乘就行了。

12樓:電燈劍客

給你bai個du樣zhi

板dao

內function c = mult(a, b)m = size(a, 1);

k = size(a, 2);

n = size(b, 2);

if k ~

容= size(b, 1)

error('cannot do a*b');

return

endfor j = 1 : n

for r = 1 : k

for i = 1 : m

c(i, j) = a(i, r) * b(r, j);

endend

endreturn

13樓:匿名使用者

^function y=fun(x);

x=input('輸入

zhix的值dao:');

if x<0&x~

版=3;y=x.^權2+x-6;

else if x>=0&x<=5&x~=2&x~=3;

y=x.^2-5.*x+6;

else y=x.^2-x-1;

endendy

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

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,endend...

matlab怎麼呼叫m檔案,matlab中一個m檔案怎麼呼叫另一個m檔案的函式

用任何方式建立都行,包括記事本,或者是matlab自帶的編譯器,然後將matlab工作目錄切換到檔案所在目錄,直接輸入檔名執行。或者在任何目錄下輸入該檔案的完全路徑。m檔案有兩種格式,一種叫做script,就是將一系列的命令寫成一個檔案。執行這種檔案相當於一次性執行了很多條命令 所有執行過程中的資料...

matlab的一道題目編寫矩陣相加函式

function a mat add a1,varargin 多個抄矩陣相加 未做引數合 bai法性檢查,參與du運算的矩陣應zhi該維數相同或為標量 舉例 daomat add magic 5 3,pascal 5 a a1 for i 1 length varargin a a varargin...