[英]How to merge elements of a matrix in MATLAB
我正在處理二進制數,行矩陣為1 x 12。
A=[1 0 1 1 0 1 1 1 1 0 0 1]
我想將3個組中的12個項目合並,以便可以將它們保存在數組中。 例如。
ARR[1]=1011
ARR[2]=0111
ARR[3]=1001
在MATLAB中有什么方法可以做到這一點?
現在已經有一段時間沒有與Matlab合作了,但是我認為這樣可以滿足您的需求:
A=[1 0 1 1 0 1 1 1 1 0 0 1];
n = size(A) / 4;
for 1:n
ARR(1:4,n) = A(n + (n-1)*4 : n*4);
end
您可以生成一個矩陣,其中每一行都是一組:
A = [1 0 1 1 0 1 1 1 1 0 0 1];
B = reshape(A, [], 3).';
給
B =
1 0 1 1
0 1 1 1
1 0 0 1
如果您確實需要將組作為嵌套數組,則可以轉換為單元格數組。 但這可能不是必需的,並且效率不如數字矩陣高:
B = reshape(A,[],3).';
B = mat2cell(B,ones(size(B,1),1));
給
B{1} =
1 0 1 1
B{2} =
0 1 1 1
B{3} =
1 0 0 1
在Matlab中,二進制數字表示為字符串。
https://ch.mathworks.com/matlabcentral/newsreader/view_thread/339967
因此,您可以將結果存儲為代表二進制數字的3x4字符矩陣:
reshape(dec2bin(A), [4 3])'
ans =
1011
0111
1001
或將它們存儲為數字(稍后使用dec2bin
將它們轉換為二進制字符串):
bin2dec(reshape(dec2bin(A), [4 3])')
ans =
11
7
9
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.