Matlab 如何将所有向量索引与一个常量值进行比较,并在此基础上切换另一个变量(0 1)的值
我有一个1x24向量(a)。我应该在Matlab中定义一个命令,将向量(a)的所有24个值与某个值(平均值(b))进行比较,如果向量(a)项大于某个值(平均值(b)),“I”设置为1,如果向量项小于某个值,“I”设置为0。我编写了以下代码: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中,可以使
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