【 MATLAB 】向量化编程实践(一)

MATLAB的特色就是向量化的编程,所以有必要练习如何使用向量化编程,用一个小例子开始,例如下面的正弦函数求和运算,要求画出图像。

【 MATLAB 】向量化编程实践(一)_第1张图片

毋庸置疑,我们肯定可以使用循环等和其他语言一样的方法实现这个函数的求和运算,但这体现不出MATLAB的特色,所以呢?我们来一起推导下,如何使用向量化的编程:

【 MATLAB 】向量化编程实践(一)_第2张图片

上面的手稿也可以看到了,式子(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');

【 MATLAB 】向量化编程实践(一)_第3张图片

同样,我们也可以对式(1)两边同时转置:

【 MATLAB 】向量化编程实践(一)_第4张图片

这样对应的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');

【 MATLAB 】向量化编程实践(一)_第5张图片

 

最后,我给出使用循环语句实现这个例子的程序:


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');

【 MATLAB 】向量化编程实践(一)_第6张图片

结果都是一样的。

本身暂时不涉及那种方式的优劣以及对于高效性的讨论。

通过上述例子,我希望自己能一步一个脚印的去学会使用向量化编程。

 

 

你可能感兴趣的:(【,MATLAB,之,数字信号处理专题】,数字信号处理的,MATLAB,实现)