1. 程式人生 > >【 MATLAB 】向量化程式設計實踐(一)

【 MATLAB 】向量化程式設計實踐(一)

MATLAB的特色就是向量化的程式設計,所以有必要練習如何使用向量化程式設計,用一個小例子開始,例如下面的正弦函式求和運算,要求畫出影象。

毋庸置疑,我們肯定可以使用迴圈等和其他語言一樣的方法實現這個函式的求和運算,但這體現不出MATLAB的特色,所以呢?我們來一起推導下,如何使用向量化的程式設計:

上面的手稿也可以看到了,式子(1)就很適合直接用MATLAB程式設計了,那麼我們寫出這個程式碼來,最後我們需要對結果進行轉置下,因為我想得到的結果值是一個行向量:

%try to use vector style to programming by using Matlab
clc
clear
close all

t = 0:0.01:1;
k = 1:2:5;
xt = sin(2*pi*t'*k)*(1./k');
xt = xt';

plot(t,xt);
xlabel('t');
ylabel('amplititude');

同樣,我們也可以對式(1)兩邊同時轉置:

這樣對應的MATLAB程式碼為:

%try to use vector style to programming by using Matlab
clc
clear
close all

t = 0:0.01:1;
k = 1:2:5;
xt = (1./k)*sin(2*pi*k'*t);

plot(t,xt);
xlabel('t');
ylabel('amplititude');

最後,我給出使用迴圈語句實現這個例子的程式:


clc
clear
close all

t = 0:0.01:1;
xt = zeros(1,length(t));
for k = 1:2:5
    xt = xt + (1/k)*sin(2*pi*k*t);
end


plot(t,xt);
xlabel('t');
ylabel('amplititude');

結果都是一樣的。

本身暫時不涉及那種方式的優劣以及對於高效性的討論。

通過上述例子,我希望自己能一步一個腳印的去學會使用向量化程式設計。