for 循环只显示迭代的最后一个值

时间:2021-04-11 14:55:06

标签: matlab for-loop

我在 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]

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

跑步时

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

您正在向向量 l 的第 B 个条目写入一个值,然后用其他值覆盖该条目 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() 函数,特别是如果结果中的前导或尾随零不成问题。