检查向量中的数字并将其替换为0或1

时间:2015-03-26 01:41:55

标签: matlab

我有一个垂直向量,有一些数字,这些数字的最大值重复几次,例如[1 0 3 2 3 1]。因此,我创建了一个for循环以检查最大值,并将此最大值替换为“1”,将另一个数字替换为“0”。这是我正在使用的代码

maxVal = max(Output);
for k= 1:coloumns
    if Output[k] = maxVal;
        Output_bin[k] = 1;
    else
        Output_bin[k] = 0;
    end
end

但是,当我使用此代码时,我收到此错误“不平衡或意外的括号或括号”。在'Output_bin [k] = 1;'的行。有人知道我为什么会收到此错误。

非常感谢。

2 个答案:

答案 0 :(得分:0)

  

检查最大值并将此最大值替换为“1”和另一个   数字为“0”

A=[1 0 3 2 3 1]';
B=A;
A(A==max(A))=1;
A(B<max(B))=0

给出

A =

 0
 0
 1
 0
 1
 0

或(可能更快)

A=[1 0 3 2 3 1]';
B=zeros(length(A),1);
B(A==max(A))=1

答案 1 :(得分:0)

你的if语句也是无效的。如果您仍想使用for循环:

maxVal = max(Output);
Output_bin=zeros(size(Output));
for k= 1:length(Output(1,:))
    if Output(k)== maxVal
        Output_bin(k) = 1;
    end
end

但你也可以像纳赛尔一样对它进行矢量化。

Output(Output<max(Output))=0;
Output(Output>0)=1