问候全部
如何对此for循环进行矢量化?
t_rebuilt=linspace(0,1,length(inner_freq));
for ii=1:1:length(inner_freq)-1;ii=ii+1;
aa_sig_rebuilt=inner_freq(ii,2)*cos(2*pi*t_rebuilt*inner_freq(ii,1)+inner_freq(ii,3));
aa_sig_combined=aa_sig_combined+aa_sig_rebuilt;
end;
我尝试用下面的一行替换它,看看它是否有效,但我只是得到一条直线
aa_sig_rebuilt=inner_freq(ii,2).*cos(2*pi*t_rebuilt*inner_freq(ii,1)+inner_freq(ii,3));
答案 0 :(得分:1)
t_rebuilt
似乎是1到N的时间点向量,在这个时间点你要评估一组三角函数,其中参数在M×3矩阵的行中定义{{1 }}。然后,您希望将所有这些结果添加到单个组合信号中。您可以在没有for循环的情况下执行此操作,如下所示:
inner_freq
然后您可以按如下方式绘制结果:
temp = 2*pi*inner_freq(:,1)*t_rebuilt; %# This matrix multiplication will
%# result in an M-by-N matrix
temp = temp+repmat(inner_freq(:,3),1,numel(t_rebuilt)); %# Replicate and add
%# column 3
aa_sig_combined = inner_freq(:,2).'*cos(temp); %'# Gives you your 1-by-N
%# combined signal
答案 1 :(得分:0)
试试这个
sum(aa_sig_rebuilt=inner_freq(:,2).*cos(2*pi*t_rebuilt*inner_freq(:,1)+inner_freq(:,3)));