Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 在循环时构建阵列_Matlab_Arrays - Fatal编程技术网

Matlab 在循环时构建阵列

Matlab 在循环时构建阵列,matlab,arrays,Matlab,Arrays,我有一个for循环,它在一个数组上循环 for i=1:length(myArray) 在这个循环中,我想检查myArray的值,如果它满足某些条件,则将其添加到另一个数组myArray2中。我查阅了MATLAB文档,但在创建数组时,如果不在初始化时声明数组的所有值或一次将数据读入数组中,就找不到任何内容 非常感谢 我猜你想要比这更复杂的东西 myArray = [1 2 3 4 5]; myArray2 = myArray(myArray > 3); 做你要做的事情最简单(但最慢)的

我有一个for循环,它在一个数组上循环

for i=1:length(myArray)
在这个循环中,我想检查myArray的值,如果它满足某些条件,则将其添加到另一个数组myArray2中。我查阅了MATLAB文档,但在创建数组时,如果不在初始化时声明数组的所有值或一次将数据读入数组中,就找不到任何内容


非常感谢

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

myArray = [1 2 3 4 5];
myArray2 = myArray(myArray > 3);
做你要做的事情最简单(但最慢)的方法是

myArray2 = [];
for x = myArray
    if CheckCondition(x) == 1
        myArray2 = [myArray2 x]; %# grows myArray2, which is slow
    end;
end;
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
您可以通过以下方式对此进行优化

myArray2 = [];
for x = myArray
    if CheckCondition(x) == 1
        myArray2 = [myArray2 x]; %# grows myArray2, which is slow
    end;
end;
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

您可能还想了解一下。

在大多数情况下,您所描述的方法就像mtrw在第一个示例中所说的那样

假设
data=[1 2 3 4 5 6 7 8 9 10]
,您只想得到偶数

select = mod(data,2)==0; % This will give a binary mask as [0 1 0 1 0 1 0 1 0 1].
如果您执行
data2=data(select)
,它将为您提供
[2 4 6 8 10]

当然,执行此操作的较短方法与mrtw在示例1中的方法相同:

data2=data(some_criteria);

您可能会发现以下感兴趣的链接:,,让我将此链接添加到列表中:您为什么使用NaN,我可以使用0还是1?@dexterdev您可以,是的。只是一个小精度。看起来,掩码必须是一个逻辑数组。我使用select=[01 01…]进行了测试,得到了一个错误“下标索引必须是实正整数或逻辑数”。然后我尝试了select=[false-true-false-true…],结果正如预期的那样。