2014-12-05 4 views
0

Допустим, у меня есть матрица A размером 300x65. последний столбец (65) содержит упорядоченные значения (1,2,3). первые 102 элемента являются «1», а остальные 50 элементов - «2», а остальные будут «3».Копирование строк матрицы matlab

У меня есть другая матрица B, которая равна 3x65, и я хочу скопировать первую строку B по числу «1» в матрице A. Вторая строка B должна быть скопирована числом «2 в в матрице» A и 3-я строка должны быть скопированы оставшимся значением матрицы A. Посредством этого матрица B должна содержать матрицу 300x65.

Я попытался использовать функцию repmat из matlab без каких-либо успехов, кто-нибудь знает, как это сделать?

+3

Вы можете вставить свой фактический код. – Nemesis

ответ

0

Если я правильно понял ваш вопрос, это нужно сделать, это

index = A(:,end); % will be a column of numbers with values of 1, 2, or 3 
newB = B(index,:); % B has 3 rows, which are copied as required by "index" 

Это должно привести к newB имеющих одинаковое число строк как A и одинаковое число столбцов в качестве исходного B

0

Есть много несоответствий в вашей задаче

сначала, если вы скопируете 1 строку B для каждого элемента A (что закончится тем, что будет описано вами), что приведет к матрице 19500x65

во-вторых, копировать его сам является неопределенным термином, вы имеете в виду дубликат? вы хотите сохранить скопированное значение в новый var?

Что я собрал из вашей проблемы, вы хотите выполнить некоторую операцию между A и B, чтобы создать матрицу и сохранить ее в B, которая сама по себе приведет к деформации процесса, если у вас нет другой переменной сохранить результат в

так я предлагаю использовать третий переменные C для сохранения результата в, а затем, если вам это нужно, чтобы быть в б множество B = C

также для любого процесса, который вы плохо описаны, я рекомендую учиться используйте цикл 'for' эффективно, потому что похоже, что вам нужно будет использовать

синтаксис f или 'для'

for i = [start:increment:end] 
    //loops for the length of [start:increment:end] 
    //sets i to the nth element of [start:increment:end] where n is the number of times the loop has run 
end