2013-11-18 1 views
1

Я давно застрял в этой проблеме в MATLAB и надеюсь найти здесь помощь!Как извлечь вектор из большой матрицы по индексу в MATLAB?

У меня очень большая матрица с 4 векторами в ней (каждый вектор - столбец) и 72300 строк .. первый столбец/вектор является индексом данных .. так что это примерно так: (пример упрощенное)

Index, Info1 Info2 Info3 
1  2  1  1 
1  4  5  3 
1  2.5 1.3 8 
2  1  4  7 
2  4  6  9 
2  12  3  7 
3  2  6  6 
3  2  1  4 
3  1  4  7 

Q1> Как я могу извлечь всю Info2 с индексом == 3 из этой матрицы?

Q2> Есть ли способ перестроить матрицу таким образом?

Index, Info1, Info2 Info3 Index Info1 Info 2 Info 3 
1        2 

и так далее ..

Я надеюсь найти некоторую помощь от вас, ребята, и много много спасибо заранее ..

добрые пожелания,

+1

Не знаю, что вы просите в Q2 – Daniel

ответ

2

Q1:

Для вас вопрос 1, я использую простой пример, потому что у меня нет вашего имени переменной.

idx = find(VectorName(:,1) == 3) % Find in all row at column 1 where = 3 (Index) 

После того, как индекс всех подряд, где индекс == 3. Таким образом извлечь info2 значение

AllInfo2 = VectorName(idx,3); % Get all value where row == idx and column = 3 (Info2) 
+1

Нет необходимости использовать 'find', логическое индексирование позволяет' idx = VectorName (:, 1) == 3' – Daniel

+0

Да, вы правы, он просто используется :) Мне нравится использовать find. И я все еще думаю о Q2. Максимальный уникальный индекс count, чтобы получить размер матрицы, но у меня нет хорошей идеи, как это сделать. – Vuwox

+0

Многое спасибо .. ты мне очень помог с вашей помощью .. –

3

Q1 >> x = A(A(:1)==3,3); % Info2 for Index==3

Q2 >> B = reshape(A.',1,[]); %Flatten A along the rows

+0

Думаю, мне нужно +1, верно? ;) – chappjc

+0

Многое спасибо всем вам ... –