-1

我的单元格数组,它包含像 a=['10100011' '11000111' 00010111' 11100011 ']; 这样的值 我想应用异或运算;我用过setxor。我想将数组的第一个值(即 10100011)异或到单元格数组的所有值,所需的输入和输出如下!

**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,我的单元格数组的所有 vals),因为我的单元格数组是 16x16。您的帮助将不胜感激。

4

1 回答 1

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];

并且您想将第一个条目的位与所有其他条目进行异或,您不必A使用dec2bin. 您可以只使用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'
于 2017-07-30T18:45:22.683 回答