我正在处理二进制数,我有一个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中有没有办法做到这一点?
答案 0 :(得分:0)
Haven现在已经和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
答案 1 :(得分:0)
您可以生成矩阵,其中每一行都是一个组:
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
答案 2 :(得分:0)
在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