假设我有一个空数组,如下所示:
s=[];
比方说我们有以下循环:
for j=1:2
for i=1:10
if a(i,j)>0
...
end
end
end
我希望将元素添加到...
,而不是s
。你是如何在MatLab中做到的?
答案 0 :(得分:6)
我建议你完全避免循环。它们在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
A > 0
的值{。}}。
如果您想将S
的值设置为A
的相应值,那么您只需使用:
S = A(A > 0);
答案 1 :(得分:1)
跟踪另一个索引,只需添加元素:
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)