我有一个由Matlab中的1000个二进制元素组成的矩阵:
M = [011,011,001,010,011,000,010,100,100,...,...]
我想用其他数字替换一些元素:000 By 000000,110 By 000001,001 By 00001,100 by 0001,101 By 001,010 By 01,011 By 1.
我使用过这种方法,但不起作用。这有什么问题?
for i = 1:1000
if M(i) == 000
M(i) = 000000;
elseif M(i) == 110
M(i) = 000001;
elseif M(i) == 001
M(i) = 00001;
elseif M(i) == 100
M(i) = 0001;
elseif M(i) == 101
M(i) = 001;
elseif M(i) == 010
M(i) = 01;
else
M(i) = 1;
end
end
请帮帮我:)。
答案 0 :(得分:2)
这里的问题是在matlab中,当您键入000
时,它表示数字0
。如果您想将其表达为000
,一种方法是使用字符串'000'
。
我将首先构建一个查找图表。
Lookup_In = [ 000 110 001 100 101 010 011 ] ;
Lookup_Out = {'000000','000001','00001','0001','101','01','1' } ;
然后,为答案构建一个空间,StrOut。 M是原始输入。
M = [011,011,001,010,011,000,010,100,100] ;
StrOut = repmat({'Unknown'},size(M)) ;
检查M中的元素是否可以在查找表Lookup_In
中找到。
[tf, idx] =ismember(M, Lookup_In) ;
输出最终结果。
StrOut(tf) = Lookup_Out(idx(tf))
然后,你会得到
'1' '1' '00001' '01' '1' '000000' '01' '0001' '0001'