Скажет, у меня есть вектор A
идентификаторов элементов:Как отсортировать столбцы матрицы в порядке очередного вектора в MATLAB?
A=[50936
332680
107430
167940
185820
99732
198490
201250
27626
69375];
И у меня есть матрица B
строка которой содержит значение 8 параметров для каждого из элементов в векторе A
:
B=[0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
1 0 1 0 0 1 0 1 1 1
1 0 1 0 0 1 0 1 1 1
0 0 1 0 0 0 0 1 0 1
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1];
Так, столбец 1 в матрице B
представляет данные элемента в строке 1 вектора A
, столбец 2 в матрице B
представляет данные элемента в строке 2 вектора A
и т. д. Тем не менее, я хочу матрицу B
содержать информацию, в другом порядке вещей, хранящуюся в векторе A2
:
A2=[185820
198490
69375
167940
99732
332680
27626
107430
50936
201250];
Как сортировать их, так что столбец 1 матрицу B
содержит данные для элемента в строке 1 вектор A2
, столбец 2 матрицы B
содержит данные для элемента в строке 2 вектора A2
и т. Д.?
Моего очень сырое решение, чтобы сделать это следующим образом:
A=A'; A2=A2';
for i=1:size(A,2)
A(2:size(B,1)+1,i)=B(:,i);
end
A2(2:size(B,1)+1,:)=zeros(size(B,1),size(B,2));
for i=size(A2,2)
for j=size(A,2)
if A2(1,i)==A(1,j)
A2(2:end,i)=A(2:end,j);
end
end
end
B2 = A2(2:end,:);
Но я хотел бы знать, уборщик, более элегантные и меньше времени метод потребления, чтобы сделать это.
Whoa! Это тоже очень крутое решение. Четкий, лаконичный и точный. Как в стороне, как вы помните, сколько выходов выполняют все эти многочисленные функции? И что еще более важно, как вы помните о них в нужный момент? :) – Kristada673
, прежде чем я увидел его в документации. однако перед тем, как ответить на вопрос, я использовал «help ismember» в командной строке и перепроверял документацию! – rahnema1
@ Kristada673 ответ обновлен, вы можете принять другой ответ! – rahnema1