2016-02-12 13 views
-2

Для примера. У меня есть [1;1;0;0;1;0;0;0;1;1;1;0] это как колонки, и я хочу выводим группу из четырех элементов:Как группировать элементы в матрице в Matlab?

1100 
1000 
1110 

Как это сделать? Я пробовал его с accumarray(), но он не работает.

+0

Не уверен, что вывод, который вы действительно хотите, вы могли бы поставить его в фактическом синтаксисе Matlab в свой вопрос? Массив из 3 целых чисел или матрицы 3x4? Или может быть что-то еще? – Daniel

+0

Посмотрите на методы индексирования, 'reshape' и' num2str'. HTH –

+0

У меня есть [1; 1; 0; 0; 1; 0; 0; 1; 1; 1; 0] это как столбец, и я хочу вывести группу из четырех элементов: '1100' '1000' '1110 'как это не как матрица, как строка – Snehal

ответ

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) = []; С (: 3: 4) = []; С (:, 4: 5) знак равно для создания массива 3 x 4:

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' 
1

Предполагая, что ваш вектор содержит только элементы 0 и 1 и имеет п * 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'; это переводит все значения 0 в 48 (ASCII «0„), и все значения 1 в 49 (ASCII“1»)
  • char(...) преобразует вашу матрицу к матрице типа символов.
  • .' переносит матрицу в самом конце, чтобы получить матрицу n * 4.

Результат:

bvec = 

1100 
1000 
1110 
+0

вам нужно перенести матрицу после изменения, или индексы столбца/строки будут неправильными. Или, альтернативно, загружать вектор строки вместо вектора столбца. – GameOfThrows

+0

Да, он работает так, как я хочу. – Snehal

+0

@GameOfThrows, Snehal - вы правы, это нужно исправить. Но я должен уйти сейчас! ;) –

Смежные вопросы