2

要素ごとに、異なる行列のバイナリ値を 1 つの行列に連結したいと考えています。

例えば、

|1 0 0|  |0 1 0|   |10 01 00|         
|0 1 1|  |1 1 0| = |01 11 10|       
|1 0 1|  |0 0 1|   |10 00 11|

これはどのように行うことができますか?

4

2 に答える 2

3

出力行列を 10 進行列として格納し、要素にアクセスするときにバイナリ文字列に変換します。

要素を連結するには、各入力行列を 2 進数として扱います

A1 = [1 0 0; 0 1 1; 1 0 1];
A2 = [0 1 0; 1 1 0; 0 0 1];
output = A1 * 2^1 + A2 * 2^0;
output_str = arrayfun(@dec2bin, output, 'UniformOutput', false);  

output二重行列になります

[2,  1,  0;
 1,  3,  2;
 2,  0,  3]

output_str文字列のセル配列になります

['10', '1',  '0';
 '1',  '11', '10';
 '10', '0',  '11']
于 2015-05-12T19:29:09.250 に答える
1

bin2decまたはdec2bin変換なしの1つの代替手段を次に示します

out = arrayfun(@(x,y) strcat(num2str(x),num2str(y)),A1,A2,'Uni',0);

入力:

A1 = [1 0 0; 0 1 1; 1 0 1];
A2 = [0 1 0; 1 1 0; 0 0 1];

出力:

>> out

out = 

'10'    '01'    '00'
'01'    '11'    '10'
'10'    '00'    '11'

文字列ではなく数値にしたい場合は、次のようにします。

outp = cellfun(@(x) str2double(x), out);

出力:

>> outp

outp =

10     1     0
 1    11    10
10     0    11
于 2015-05-13T11:58:50.227 に答える