For循环查找落入Matlab中指定区间的值

For-loop to find values falling into a specified interval in Matlab

在 Matlab 中,我有一个矩阵 pvals,其中 size(pvals) = 210 x 210

我想要 "search" 矩阵使得 pvals 中的任何值都满足

pvals < 2.7613 or pvals > 0.3621405

然后我想要另一个矩阵 VALS 将该条目记录为 0。所以最后我得到了这个矩阵 VALS ,它与 pvals 大小相同,但根据 pvals 中的相应值是否填充了 0's1's落入我指定的区间或之外。

我试过下面的 for-loop

for i=1:size(pvals,1)
        if pvals(i) < 2.7613 && pvals(i) > 0.3621405
            VALS(i) = 0;
        else VALS(i) = 1;
        end
end

但这会创建一个 1x210 矩阵 VALS 而不是 210x210,我猜是因为我只是在 i=1:size(pvals,1) 中循环一次??

有人能帮忙吗?

谢谢

您不想在 Matlab 中为此使用循环:

VALS = ~(pvals < 2.7613 | pvals > 0.3621405);

顺便说一句,要修复你的循环(以及你在 Matlab 中所做的每个循环),你应该通过添加行来预分配内存

VALS = zeros(size(pvals));

循环之前。

这可以在 matlab 中一行完成:

VALS = pvals >= 2.7613 | pvals <= 0.3621405;