Matlab 对进行求和的循环进行矢量化

Matlab 对进行求和的循环进行矢量化,matlab,for-loop,vectorization,Matlab,For Loop,Vectorization,大家好 我如何为循环向量化这个 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; en

大家好

我如何为循环向量化这个

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_rebuilded=internal_freq(ii,2)。*cos(2*pi*t_rebuilded*internal_freq(ii,1)+internal_freq(ii,3))

试试这个

sum(aa_sig_rebuilt=inner_freq(:,2).*cos(2*pi*t_rebuilt*inner_freq(:,1)+inner_freq(:,3)));

似乎
t_
是一个1×N的时间点向量,在该时间点上,您需要使用M×3矩阵
内部频率
行中定义的参数计算一组三角函数。然后,您需要将所有这些结果添加到单个组合信号中。您可以在不使用for循环的情况下执行此操作,如下所示:

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
plot(t_rebuilt,aa_sig_combined);
然后可以按如下方式绘制结果:

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
plot(t_rebuilt,aa_sig_combined);
t_=linspace(0,1,长度(内部频率));这是另一个数组,我画了出来,结果是一条直线