懂視移動端 視頻1 視頻21 視頻41 視頻61 視頻文章1 視頻文章21 視頻文章41 視頻文章61 推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37 推薦39 推薦41 推薦43 推薦45 推薦47 推薦49 關鍵詞1 關鍵詞101 關鍵詞201 關鍵詞301 關鍵詞401 關鍵詞501 關鍵詞601 關鍵詞701 關鍵詞801 關鍵詞901 關鍵詞1001 關鍵詞1101 關鍵詞1201 關鍵詞1301 關鍵詞1401 關鍵詞1501 關鍵詞1601 關鍵詞1701 關鍵詞1801 關鍵詞1901 視頻擴展1 視頻擴展6 視頻擴展11 視頻擴展16 文章1 文章201 文章401 文章601 文章801 文章1001 資訊1 資訊501 資訊1001 資訊1501 標簽1 標簽501 標簽1001 關鍵詞1 關鍵詞501 關鍵詞1001 關鍵詞1501
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 手機 - 正文

如何用matlab進行矩陣運算

來源:懂視網(wǎng) 責編:小OO 時間:2020-04-03 21:09:29
導讀如何用matlab進行矩陣運算,a=[123;456;778];b=[122;234];A=prod(a,2);B=prod(b,2);[ma,n]=size(a);[mb,n]=size(b);R=zeros(mb,ma);forr=1:mbR(r,:)=B(r)*A;endRR=24480156814428809408矩陣分析可以解決很多問題,但很多時候矩陣的運算比較繁瑣,特別是高階矩

a = [1 2 3; 4 5 6; 7 7 8];b = [1 2 2; 2 3 4];A = prod(a,2)';B = prod(b,2)';[ma,n] = size(a);[mb,n] = size(b);R = zeros(mb,ma);for r = 1:mb R(r,:) = B(r)*A;endR R = 24 480 1568 144 2880 9408

矩陣分析可以解決很多問題,但很多時候矩陣的運算比較繁瑣,特別是高階矩陣運算。這時候如果用matlab來計算就方便快捷得多。下面就為大家介紹怎么用matlab進行矩陣運算的步驟

首先可以求點乘,維數(shù)肯定要相同; “.*”和“*”的區(qū)別: 在進行數(shù)之間的運算時“.*”和“*”是沒有區(qū)別的,都是表示普通的乘法運算。例:m = 2,n = 3,m.*n = 6, m*n = 6。 在進行矩陣之間的運算時“.*”和“*”的意義就有所不同了。假設a,b表示兩個矩

約定:

     a=[1,3,5;2,4,6;7,9,8]    b=[9,6,4;3,4,5;2,3,4]

用xor函數(shù),比如xor(A,B) 參看http://www.mathworks.com/help/matlab/ref/xor.html?refresh=true

材料/工具

matlab

1,收先打開Matlab軟件,在軟件界右側點擊鼠標右鍵,選擇“new file”,點擊“script”新建一個文件: 2、在腳本里隨意輸入一個簡單的矩陣,matlab里矩陣轉置實現(xiàn)起來比較容易,只需要通過英文的單引號就能實現(xiàn)轉置操作: 3、按回車鍵之后,就可以看

方法

加和減:

加減法的命令很簡單,直接用加或者減號就可以了。如:c=a+b d=a-b

你不可以這么寫。首先必須將A轉化為syms,所以你應該這么寫 >>A=sym(A); >>syms a >>A(1,1)=a; 這樣再試試呢?

乘法:

一般乘法:c=a*b,要求a的列數(shù)等于b的行數(shù)。

加和減: 加減法的命令很簡單,直接用加或者減號就可以了。如: c=a+b d=a-b 乘法: 一般乘法:c=a*b,要求a的列數(shù)等于b的行數(shù)。 如果a,b是一般的向量,如a=[1,2,3] b=[3,4,5] 點積: dot(a,b), 叉積: cross(a,b) 卷積: conv(a,b) 除法:一般

如果a,b是一般的向量,如a=[1,2,3] b=[3,4,5]

矩陣沒有指數(shù)和對數(shù)運算 數(shù)組運算:.^(指數(shù))是對應元素的運算,與矩陣運算完全不同。 矩陣運算:+ - * / -1(求逆) 等運算

點積:dot(a,b),

此題考查特征值的性質 用常用性質解此題: 1.A的行列式等于A的全部特征值之積 所以 |A| = -1*1*2 = -2 2.若a是可逆矩陣A的特征值,則 |A|/a 是A*的特征值 所以A*的特征值為 2,-2,-1 所以|A*| = 2*(-2)*(-1) = 4. 注:當然也可用伴隨矩陣的行列式性

叉積:cross(a,b)

轉自知乎: 原帖鏈接:http://www.zhihu.com/question/19706331 MATLAB的矩陣計算使用的是Intel自己出的Math kernel library(MKL),這個庫遠比其他的blas/lapack庫要快。C快在循環(huán),要想矩陣計算也和MATLAB一樣快,那就得鏈接MKL,寫起來免不了

卷積: conv(a,b)

轉自知乎: 原帖鏈接:http://www.zhihu.com/question/19706331 MATLAB的矩陣計算使用的是Intel自己出的Math kernel library(MKL),這個庫遠比其他的blas/lapack庫要快。C快在循環(huán),要想矩陣計算也和MATLAB一樣快,那就得鏈接MKL,寫起來免不了

除法:一般在解線性方程組時會用到。

要計算三維矩陣每一層的norm的話,用for是比較合適的,如果必須不用for的話,你可以試試這個流程: >> a = randn( 2, 2, 3 ) a(:,:,1) = 0.3129 -0.0301 -0.8649 -0.1649 a(:,:,2) = 0.6277 1.1093 1.0933 -0.8637 a(:,:,3) = 0.0774 -1.1135 -1

x=ab 如果ax=b,則 x=ab是矩陣方程的解。

pa = prod(a, 2);pb = prod(b, 2);repmat(pa', numel(pb), 1) - repmat(pb, 1, numel(pa))

x=b/a 如果xa=b,則x=b/a是矩陣方程的解。

對于使用變量的矩陣運算,首先必須要定義變量名稱,在Matlab中通過使用syms來定義非常方便,通過運算后將變量替換為具體的數(shù)值,下面為具體的一個實例: 1.定義變量 syms x y z; 2.定義矩陣 R1=[cos(x) -sin(x) 0;sin(x) cos(x) 0;0 0 1]; R2=[

轉置:

轉置時,矩陣的第一行變成第一列,第二行變成第二列,。。。

首先,肯定是算法上的優(yōu)化,它沒有直接按照定義去做乘,而是先對矩陣做了一些變換再乘,目的就是減少重復運算的次數(shù)。關于這個,你可以去看下Knuth的The art of programming的第一卷,那里面有例子說明怎樣算最快; 其次,如果你想看些原代碼,

x=a.'

求逆:

要求矩陣為方陣。x=inv(a)

可以這樣,m文件不應該聲明為函數(shù),也就是上面沒有聲明function的才可以,三個文件均作為命令腳本運行,這樣運算的東西都會放到工作區(qū)當中,先執(zhí)行T1再執(zhí)行T2 T3就可以了 如果已經(jīng)是m文件函數(shù)的形式可以用global的方法將變量導出

擴展閱讀,以下內容您可能還感興趣。

如何寫出比 MATLAB 更快的矩陣運算程序

轉自知乎:

原帖鏈接:http://www.zhihu.com/question/19706331

MATLAB的矩陣計算使用的是Intel自己出的Math kernel library(MKL),這個庫遠比其他的blas/lapack庫要快。C快在循環(huán),要想矩陣計算也和MATLAB一樣快,那就得鏈接MKL,寫起來免不了各種折騰。而且,即使你鏈接上了,編譯時各種優(yōu)化選項之類的還是比不上人家專業(yè)的設定,速度很難接近MATLAB。

我自己在Gentoo上試過源里的所有blas/lapack庫,無一能與MKL匹敵,而且連接近都不可能。甚至我把python的NumPy庫鏈接上MKL后,速度也只是勉強接近。由于Gentoo的MKL庫永遠是最新的,而每一個新版本的MKL庫對矩陣計算都有略微提升,導致可能暫時NumPy與MATLAB可以匹敵。但是一旦更新版本的MATLAB出來后,它會使用上更新的MKL庫,這種領先優(yōu)勢就又喪失殆盡。你可以在MATLAB文檔搜索中輸入MKL,這樣會被定位到MATLAB release notes,而里面就會含有這么一句話“Upgrade to Intel Math Kernel Libraries”,這就是每一個版本MATLAB矩陣計算都越發(fā)*快的原因。

當然,剛我提到的python,其矩陣計算速度雖然微微落后于MATLAB,但是在很多其他地方是可以大大強于MATLAB的。例如繪制大規(guī)模三維點云,以及輕松調用gpu之類的。因此python在矩陣計算的微小速度劣勢完全可以忽略,可以考慮用于科學計算。

Matlab 三維矩陣操作怎樣用矩陣運算代替for循環(huán)

要計算三維矩陣每一層的norm的話,用for是比較合適的,如果必須不用for的話,你可以試試這個流程:

>> a = randn( 2, 2, 3 )

a(:,:,1) =

0.3129 -0.0301

-0.8649 -0.1649

a(:,:,2) =

0.6277 1.1093

1.0933 -0.8637

a(:,:,3) =

0.0774 -1.1135

-1.2141 -0.0068

>> a1 = cellfun( @( x ) norm( x ), num2cell( a, [ 1 2 ] ) );

>> a1 = a1( : )

a1 =

0.9312

1.4482

1.2260

思路就是把三維矩陣轉為一個元胞序列,元胞里的每個元素就是原始矩陣的每一層,然后利用cellfun函數(shù)進行批量計算。

怎么用MATLAB實現(xiàn)兩個矩陣之間的運算

pa = prod(a, 2);

pb = prod(b, 2);

repmat(pa', numel(pb), 1) - repmat(pb, 1, numel(pa))

matlab中怎么用將矩陣當成自變量帶入函數(shù)運算?

對于使用變量的矩陣運算,首先必須要定義變量名稱,在Matlab中通過使用syms來定義非常方便,通過運算后將變量替換為具體的數(shù)值,下面為具體的一個實例:

1.定義變量

syms x y z;

2.定義矩陣

R1=[cos(x) -sin(x) 0;sin(x) cos(x) 0;0 0 1];

R2=[cos(y) 0 sin(y);0 1 0;-sin(y) 0 cos(y)];

R3=[1 0 0;0 cos(z) -sin(z);0 sin(z) cos(z)];

3.求解矩陣

a=R1*R2*R3

4.變量替換

subs(a,{x,y,z},{0,pi/2,0})

則能夠直接求解出矩陣a的具體值。

完整的程序如下,直接保存為.m文件可以直接運行:

syms x y z;

R1=[cos(x) -sin(x) 0;sin(x) cos(x) 0;0 0 1];

R2=[cos(y) 0 sin(y);0 1 0;-sin(y) 0 cos(y)];

R3=[1 0 0;0 cos(z) -sin(z);0 sin(z) cos(z)];

a=R1*R2*R3;

subs(a,{x,y,z},{0,pi/6,pi/3})

PS:關于subs函數(shù)的使用 subs(f,{old},{new});

其中f是關于old的變量函數(shù),new為具體的數(shù)值

matlab 矩陣快速運算是怎么實現(xiàn)的

首先,肯定是算法上的優(yōu)化,它沒有直接按照定義去做乘,而是先對矩陣做了一些變換再乘,目的就是減少重復運算的次數(shù)。關于這個,你可以去看下Knuth的The art of programming的第一卷,那里面有例子說明怎樣算最快;

其次,如果你想看些原代碼,貌似matlab在很久前就開始用LAPACK這個數(shù)學包了,LAPACK是開源的,是個數(shù)*算的包。你可以google下。

最后,stackexchange上有差不多的問題,比較了下各語言的速度,我給你粘貼下。

1024x1024 2048x2048 4096x4096

--------------- -------------- ---------------

CUDA C (ms) 43.11 391.05 3407.99

C++ (ms) 6137.10 64369.29 551390.93

C# (ms) 10509.00 300684.00 2527250.00

Java (ms) 9149.90 92562.28 838357.94

MATLAB (ms) 75.01 423.10 3133.90

當然上面的C++用的算法我猜是按定義直接算的。

聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

標簽: 大眾
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

iphone6s怎么安裝xy助手提示未受信任的企業(yè)級開發(fā)者 如何在word中使文檔分頁 優(yōu)酷緩存的視頻如何導出 如何將qq音樂里的歌曲快速導入到ipod shuffle 360瀏覽器出現(xiàn)亂碼的解決方法是什么 3dmax彎曲怎么用?彎曲命令詳解是什么 ps中涂抹工具和模糊工具怎么用 c盤哪個文件夾可以刪 怎么用手機號查詢ems快遞 蘋果手機電量百分比顯示如何設置! 電腦打不出漢字是什么原因? 家庭無線局域網(wǎng)怎么組建 怎么批量提取文件名到excel表 新版微博應該怎么看好友在線 adobe audition cs6怎么使用錄音 ipad應該怎樣升級系統(tǒng) 163郵箱怎么登陸 coreldraw:[1]coreldraw應該怎么修改背景顏色 移動硬盤上的文件夾加密方法是什么 如何添加或刪除pdf中的文字和圖片內容 怎么將excle表格中的圖片批量居中對齊 怎么解決winxp訪問win10共享打印機提示憑據(jù)不足 個人簡歷模版怎么制作 如何把多個pdf文件合并 小技巧教你怎么解決此windows副本不是正版的問題 iphone徹底清除緩存的方法是什么 嗨氏電腦按鍵設置教程是什么 iphone手機怎么清理垃圾 怎么查看電腦顯卡信息 怎么給視頻文件添加片頭片尾 怎么在ps中載入圖案 如何用上古卷軸5的mod管理器mo 怎樣用美圖秀秀手動摳圖 蘋果官網(wǎng)怎么查序列號,蘋果6序列號官網(wǎng)查詢 gx developer安裝教程是什么 如何查看cad中某點的坐標 添加打印機提示操作無法完成應該怎么辦 object error解決方法是什么 cutterman官網(wǎng)下載 word文檔字體如何變大
Top