向量化求和的 for 循环

发布于 2024-11-14 14:20:18 字数 447 浏览 4 评论 0原文

大家好

我如何矢量化这个 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));

Greetings All

How can I vectorizing this for loop?

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;

I tried replacing it with the line below to see if it worked but I just get a straight line

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

做个少女永远怀春 2024-11-21 14:20:18

看来 t_rebuilt 是一个由时间点组成的 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);

It appears that t_rebuilt is a 1-by-N vector of time points at which you want to evaluate a set of trigonometric functions with parameters defined in the rows of the M-by-3 matrix inner_freq. Then you want to add all these results into a single combined signal. You can do this without a for loop as follows:

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

You can then plot the result as follows:

plot(t_rebuilt,aa_sig_combined);
鸵鸟症 2024-11-21 14:20:18

试试这个

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

Try this

sum(aa_sig_rebuilt=inner_freq(:,2).*cos(2*pi*t_rebuilt*inner_freq(:,1)+inner_freq(:,3)));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文