例如。我将[1;1;0;0;1;0;0;0;1;1;1;0]
作为列,我希望输出四个元素的组:
1100
1000
1110
怎么做?我尝试使用accumarray()
,但它无效。
答案 0 :(得分:1)
假设您的向量仅包含元素0和1并且具有n * 4个元素:
bvec = [1;1;0;0;1;0;0;0;1;1;1;0];
bvec = char(reshape( bvec, 4, numel(bvec)/4 ) + '0').';
让我们分解一下:
reshape( bvec, numel(bvec)/4, 4 );
打破你的列向量(也可能是行向量)到一个有4行的矩阵(你的4位[?]组),它是一个4 * n类型为double的矩阵,+ '0'
添加数值48以表示ASCII字符' 0
&#39 ;;这会将0
的所有值转换为48
(ASCII' 0
')以及1
到49
的所有值(ASCII& #39; 1
&#39)char( ... )
将您的矩阵转换为字符类型矩阵。.'
将矩阵转置到最后,得到一个n * 4矩阵。<强>结果:强>
bvec =
1100
1000
1110
答案 1 :(得分:0)
A = [1;1;0;0;1;0;0;0;1;1;1;0];
B = reshape(A,4,3)'; %//DONT FORGET THE `'` or your results would be wrong...
C = strcat(num2str(B)); %C is a char Array currently
C =
1 1 0 0
1 0 0 0
1 1 1 0
删除空格:
你可以做C(:,2:3)= []; C(:,3:4)= []; C(:,4:5)= [];创建一个3 x 4 char数组:
C =
1100
1000
1110
但为什么你这么做?所以更好的方法是:
regexprep(cellstr(C),'[^\w'']',''); %//Now a cell Array. It is generally better practice to store strings as Cell Array instead of Char Array.
ans =
'1100'
'1000'
'1110'