循环时构建数组

Mar*_*ark 4 arrays matlab

我有一个for循环遍历一个数组...

for i=1:length(myArray)
Run Code Online (Sandbox Code Playgroud)

在这个循环中,我想检查myArray的值,如果满足某些条件,则将其添加到另一个数组myArray2.我查看了MATLAB文档,但是没有在创建数组时发现任何内容,而没有在初始化时声明所有值或一次性将数据读入其中.

非常感谢!

mtr*_*trw 7

我猜你想要比这更复杂的东西

myArray = [1 2 3 4 5];
myArray2 = myArray(myArray > 3);
Run Code Online (Sandbox Code Playgroud)

做你想问的最容易(但最慢)的方法是这样的

myArray2 = [];
for x = myArray
    if CheckCondition(x) == 1
        myArray2 = [myArray2 x]; %# grows myArray2, which is slow
    end;
end;
Run Code Online (Sandbox Code Playgroud)

您可以使用类似的方式对此进行优化

myArray2 = NaN(size(myArray));
ctr = 0;
for x = myArray
    if CheckCondition(x) == 1
        ctr = ctr + 1;
        myArray2(ctr) = xx;
    end;
end;
myArray2 = myArray2(1:ctr); %# drop the NaNs
Run Code Online (Sandbox Code Playgroud)

您可能还想查看ARRAYFUN.