如何在MATLAB中用其他数字替换矩阵的某些元素?

时间:2017-11-10 17:22:29

标签: matlab replace binary

我有一个由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

请帮帮我:)。

1 个答案:

答案 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'