我在 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]
为了这个例子,我只使用整数,但实际方程要复杂得多,我认为我真的需要使用循环函数。
感谢您的帮助。
答案 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()
函数,特别是如果结果中的前导或尾随零不成问题。