Matlab 如何将所有向量索引与一个常量值进行比较,并在此基础上切换另一个变量(0 1)的值

Matlab 如何将所有向量索引与一个常量值进行比较,并在此基础上切换另一个变量(0 1)的值,matlab,for-loop,if-statement,comparison,Matlab,For Loop,If Statement,Comparison,我有一个1x24向量(a)。我应该在Matlab中定义一个命令,将向量(a)的所有24个值与某个值(平均值(b))进行比较,如果向量(a)项大于某个值(平均值(b)),“I”设置为1,如果向量项小于某个值,“I”设置为0。我编写了以下代码: for i=1:length(a) if a(i) >= mean(b) I = 1; else I = 0; end end 但它只对向量a的最后一个索引执行比较,并设置I=0。如何修复对向量a的所有索引进行比较的命令 在MATLAB中,可以使

我有一个1x24向量(a)。我应该在Matlab中定义一个命令,将向量(a)的所有24个值与某个值(平均值(b))进行比较,如果向量(a)项大于某个值(平均值(b)),“I”设置为1,如果向量项小于某个值,“I”设置为0。我编写了以下代码:

for i=1:length(a)
if a(i) >= mean(b)
I = 1;
else
I = 0;
end
end  

但它只对向量a的最后一个索引执行比较,并设置I=0。如何修复对向量a的所有索引进行比较的命令

在MATLAB中,可以使用以下语法执行此操作:

I = a >= mean(b);
如果要使用代码进行此操作,则需要将I初始化为向量,并按如下方式修改其索引:

I = zeros(length(a),1)
for ii=1:length(a)
    if a(ii) >= mean(b)
        I(ii) = 1;
    else
        I(ii) = 0;
    end
end  

在MATLAB中,可以使用以下语法执行此操作:

I = a >= mean(b);
如果要使用代码进行此操作,则需要将I初始化为向量,并按如下方式修改其索引:

I = zeros(length(a),1)
for ii=1:length(a)
    if a(ii) >= mean(b)
        I(ii) = 1;
    else
        I(ii) = 0;
    end
end  
你应该在matlab中阅读。您所做的事情不需要循环。例如,如果你有

rng(5);
a = rand(1,10);
b = 0.5;
然后,
I=a>b
将返回一个包含0和1的逻辑数组,其中1表示数组中满足给定条件的位置

I =

     0     1     0     1     0     1     1     1     0     0
使用这些索引,可以修改原始数组。例如,如果您希望将
a
大于
b
的所有值更改为10,只需执行以下操作:

a(a > b) = 10;
具体来说,如果您需要满足条件的索引,您可以使用,
find(a>b)
,在本例中,它将为您提供

ans =

     2     4     6     7     8
你应该在matlab中阅读。您所做的事情不需要循环。例如,如果你有

rng(5);
a = rand(1,10);
b = 0.5;
然后,
I=a>b
将返回一个包含0和1的逻辑数组,其中1表示数组中满足给定条件的位置

I =

     0     1     0     1     0     1     1     1     0     0
使用这些索引,可以修改原始数组。例如,如果您希望将
a
大于
b
的所有值更改为10,只需执行以下操作:

a(a > b) = 10;
具体来说,如果您需要满足条件的索引,您可以使用,
find(a>b)
,在本例中,它将为您提供

ans =

     2     4     6     7     8