假设我有一个空数组,如下所示:
s=[];
假设我们有以下循环:
for j=1:2
for i=1:10
if a(i,j)>0
...
end
end
end
而不是...
,我想将元素添加到s
. 你如何在 MatLab 中做到这一点?
我建议您完全避免循环。它们在 MATLAB 中很慢。
假设您要将所有S(i,j)
对应的值设置为 1 A(i,j) > 0
。你可以这样做:
S = zeros(size(A)); % always a good idea to initialize your array
S(A > 0) = 1; % and done.
更简洁:
S = A > 0;
这指定您将 的值更改S
为 1 对应于A
where的那些值A > 0
。
如果要将值设置S
为相应的值,A
则只需使用:
S = A(A > 0);
跟踪另一个索引并在进行时添加元素:
idx = 1
for j=1:2
for i=1:10
if a(i,j)>0
s(idx) = a(i,j)
idx = idx + 1
end
end
end
虽然对于您的特定问题,您可以只写
a(a>0)