-2

假设我有一个空数组,如下所示:

s=[];

假设我们有以下循环:

for j=1:2
   for i=1:10
      if a(i,j)>0
      ...
      end
   end
end

而不是...,我想将元素添加到s. 你如何在 MatLab 中做到这一点?

4

2 回答 2

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 对应于Awhere的那些值A > 0

如果要将值设置S为相应的值,A则只需使用:

S = A(A > 0);
于 2013-06-17T14:40:35.940 回答
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)
于 2013-06-17T14:37:18.180 回答