我有一个垂直向量,有一些数字,这些数字的最大值重复几次,例如[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;'的行。有人知道我为什么会收到此错误。
非常感谢。
答案 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