例如讓我們矩陣:MATLAB:如何連接兩個數字矩陣使得在每個矩陣中的對應號碼現在級聯
A= 1 0 0
0 1 0
1 1 0
B= 1 1 0
0 0 1
1 0 0
所需結果是
AB=11 01 00
00 10 01
11 10 00
例如讓我們矩陣:MATLAB:如何連接兩個數字矩陣使得在每個矩陣中的對應號碼現在級聯
A= 1 0 0
0 1 0
1 1 0
B= 1 1 0
0 0 1
1 0 0
所需結果是
AB=11 01 00
00 10 01
11 10 00
試試:
reshape(mat2cell(dec2bin(A+B), ones(numel(A),1)), size(A))
或來自Rody的更簡潔的建議:
reshape(num2cell(dec2bin(A+B), 2), size(A))
+1,但我會改變內部部分爲'num2cell(dec2bin(A + B),2)' –
也:您的解決方案消耗576字節,而全邏輯解決方案消耗18個字節......事實上,基於單元的解決方案總是消耗比純邏輯解決方案多32倍的內存。這可能不是一件壞事(問題不是很明確),但對某人來說可能很重要:) –
如何將它擴展到三個或更多的矩陣? 一旦元素在單元陣列中,我無法像以前那樣對它們進行操作 – naman
記住3種方法;這取決於你想要的究竟是。
% Example data (make them logical to save space)
A= [1 0 0
0 1 0
1 1 0] == 1;
B= [1 1 0
0 0 1
1 0 0] == 1;
%# Method 1
cols = size(A,2) + size(B,2);
C1(:, 1:2:cols) = A;
C1(:, 2:2:cols) = B
%# Method 2
C2 = cellfun(@horzcat, num2cell(A),num2cell(B), 'UniformOutput',false)
C2{:,1}
%# Method 3 (same as 2, really, but simpler)
C3 = strcat(num2cell(A), num2cell(B))
C3{:,1}
謝謝。第二種方法有所幫助。雖然我需要存儲在單元格數組中的元素作爲字符串。應該提到這一點。反正丹的答案涵蓋了這一點。 – naman
你能添加代碼嗎?你有什麼/曾經嘗試過,哪些行不通? – Unihedron
確切的格式是「AB」?字符串的單元格數組? – Dan
問題僅限於邏輯? –