這篇文章將為大家詳細講解有關(guān)MATLAB如何巧用矩陣運算避免循環(huán),小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)公司服務(wù)項目包括撫順縣網(wǎng)站建設(shè)、撫順縣網(wǎng)站制作、撫順縣網(wǎng)頁制作以及撫順縣網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,撫順縣網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到撫順縣省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
剛剛中午在寫作業(yè)的時候突然想起來的這個方法,感覺應(yīng)該有點用,就趁熱做了這篇推送來分享一下,哈哈哈。
吶,就是上圖中紅框的那道題,要把給算出來,這我當時就準備用一個循環(huán)來算了,但當時我腦海中突然閃過一道光,然后就冒出來了用矩陣來算一下的念頭。哈哈,不過幸好還記得點線性代數(shù)上的一些知識,試了一下算出來了。下面先放上代碼再簡單解釋一下。
A1 = 1;
A2 = 0.5;
A3 = 0.2;
A = [A1, A2, A3];
f0 = 5; %Hz
i = [1:3]';
x3 = @(t) A * sin(2*pi*f0* i * t);
fs = 2048; % 采樣頻率Hz,每秒2048個點
Ts = 1 / fs; % 采樣間隔
n = 0 : 2048 - 1; % 2k個點(正好采1s)
t = n .* Ts; % 時間t
plot(t, x3(t))
下面這是結(jié)果
現(xiàn)在看一下題中的那個式子,它就是下面這三行相加:
這就能寫成
到這還沒結(jié)束
上面這個矩陣可以寫成如下的形式
嘿嘿,所以那個題中的那個和式可以寫成如下的形式
這便是程序中的這行了
x3 = @(t) A * sin(2*pi*f0* i * t);
注意,A是行向量,i是列向量。到此這個小技巧便說完了,實際上還是數(shù)學(xué)知識,不算是什么小技巧。艾,這個MarkDown中用latex插入公式簡直太好用了,夸一下。
But,要是這個線代中矩陣的乘法都一點也不記得的話,對上面的這個方法沒信心,那還是用循環(huán)把,如下:
x = 0;
for i = 1 : length(A)
x = x + A(i).*sin(2*pi*f0*i .*t);
end
sum(x == x3(t)) % 和上面利用矩陣運算的出來的結(jié)果對比一下,看看兩個算出來的值是否都一樣
這個在命令行中輸出的結(jié)果如下
關(guān)于“MATLAB如何巧用矩陣運算避免循環(huán)”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。