2017-07-30 52 views
-1

我的單元陣列,它包含的值如 a = ['10100011''11000111'00010111'11100011']; 我想申請異或操作; 我用setxor。我想將xor的第一個數值即10100011賦值給單元陣列的所有值,要求輸入&的輸出如下!setxor具有全單元數組值的單元數組的單值?

**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。你的幫助將被高度評價。

+0

請提供[MCVE]與樣本輸入和期望的輸出。 – beaker

+0

Plz現在檢查@beaker – Rida

+1

請包括示例代碼,顯示如何構建您的輸入。我可以解釋這是幾種不同的方式,每種方式都會導致不同的解決方案。你對'setxor'的使用也很混亂,因爲這顯然不是一個集合。 – beaker

回答

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

而且要XOR與所有其他條目的第一個條目的位,你不必使用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' 
+0

不,我將它從hexa轉換爲dec,然後dec2bin,現在我必須在二進制格式上應用xor門,我的單元格也是16x16,所以我想要setxor(我的單元格數組的第一個val,全部我的單元陣列的vals) – Rida

+1

@Rida:你需要做更多的描述輸入數據的工作,你可以從你的問題開始。給我們一些示例代碼來生成您正在使用的輸入,因爲您的解釋不清楚。 – gnovice

+0

我編輯了我的文章@gnovice – Rida