【问题标题】:for loop only displays last value of iterationsfor 循环仅显示迭代的最后一个值
【发布时间】:2021-04-11 14:55:06
【问题描述】:

我在 Matlab 中使用 for 循环函数来像这样在一行中显示我的值

[4;0;5;0;6;0;7;0;8;0;9;0;3;0;6];

,但使用以下代码:

A = [4;5;6;7;8;9;3;6];
B = zeros;
C=height(A);
D=15;
for l = 1:2:D
    for k = 1:C
        B(l,1)=A(k,1);
    end
end

只有最后一个值显示在行中,如下所示:

[6;0;6;0;6;0;6;0;6;0;6;0;6;0;6]

为了这个例子,我只使用整数,但真正的方程要复杂得多,我认为我真的需要使用循环函数。

感谢您的帮助。

【问题讨论】:

  • 您只是想在每个值之间插入零吗?

标签: matlab for-loop


【解决方案1】:

当你跑步时

for l = 1:2:D
    for k = 1:C
        B(l,1)=A(k,1);

您正在向向量Bl-th 条目写入一个值,然后用其他值覆盖该条目C-1 次(最后一个是A(end))。您的方法的主要问题是您不需要两个循环,因为没有要遍历的正交维度;你可以改用:

A = [4;5;6;7;8;9;3;6];
C = size(A,1);
B = zeros( 2*C-1, 1 );
for l=1:C
    B( 2*l-1, 1 )=A(l,1);
end

for 循环可以完全删除以支持矢量化操作:

B(1:2:end,1) = A(:,1);

如果您安装了信号处理工具箱,您也可以使用 upsample() 函数,尤其是在结果中的前导零或尾随零不成问题的情况下。

【讨论】:

    猜你喜欢
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2019-02-09
    • 2018-01-06
    相关资源
    最近更新 更多