setxor具有全单元数组值的单元数组的单个值?

时间:2017-07-30 18:18:15

标签: matlab bit-manipulation xor cell-array bitwise-xor

我的单元格数组,它包含类似的值  A = [' 10100011' ' 11000111' 00010111' 11100011']; 我想申请xor操作; 我用过setxor。我想xor数组的第一个值,即10100011 x到单元格数组的所有值,所需的输入&输出如下!

**setxor(10100011, 10100011) =00000000%(first value xor result with first value)    
setxor(10100011 , 11000111) =1100100%(first val xor result with second value)   
setxor(10100011, 00010111 )=10110100%(first val xor result with third value)   
setxor(10100011 ,11100011)=1000000 %(first val xor result with forth value)**

但我不知道如何传递完整的单元格数组和单值,我试图使用cellfun,但这不起作用。我想要一些setxor(我的单元格数组的第一个val,我的单元格数组的所有val),因为我的单元格数组是16x16。你的帮助会很高兴。

1 个答案:

答案 0 :(得分:1)

如果你是从这样的数据开始:

A = [163 215 9 131 248 72 246 244 179 33 21 120 153 177 175 249; ...
     231 45 77 138 206 76 202 46 82 149 217 30 78 56 68 40];

并且您希望将第一个条目的位与其他所有条目进行异或,您不必使用dec2bin转换A。您可以使用bitxor,然后根据需要格式化结果(二进制字符串的十进制或单元格数组):

>> decOut = bitxor(A(1), A)

decOut =

     0   116   170    32    91   235    85    87    16   130   182   219    58    18    12    90
    68   142   238    41   109   239   105   141   241    54   122   189   237   155   231   139

>> binOut = reshape(cellstr(dec2bin(decOut)), size(A))

binOut =

  2×16 cell array

  Columns 1 through 10

    '00000000'    '01110100'    '10101010'    '00100000'    '01011011'    '11101011'    '01010101'    '01010111'    '00010000'    '10000010'
    '01000100'    '10001110'    '11101110'    '00101001'    '01101101'    '11101111'    '01101001'    '10001101'    '11110001'    '00110110'

  Columns 11 through 16

    '10110110'    '11011011'    '00111010'    '00010010'    '00001100'    '01011010'
    '01111010'    '10111101'    '11101101'    '10011011'    '11100111'    '10001011'