【发布时间】:2016-12-07 17:38:13
【问题描述】:
假设我有一个包含项目 ID 的向量 A:
A=[50936
332680
107430
167940
185820
99732
198490
201250
27626
69375];
我有一个矩阵 B,它的行包含向量 A 中每个项目的 8 个参数的值:
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];
所以,矩阵B的第1列代表向量A第1行的item数据,矩阵B的第2列代表向量A第2行的item数据,以此类推。但是,我希望矩阵 B 包含以不同顺序存储在向量 A2 中的项目的信息:
A2=[185820
198490
69375
167940
99732
332680
27626
107430
50936
201250];
如何对它们进行排序,以便矩阵 B 的第 1 列包含向量 A2 的第 1 行中的项目的数据,矩阵 B 的第 2 列包含向量 A2 的第 2 行中的项目的数据,等等?
我非常粗略的解决方案如下:
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,:);
但我想知道一种更清洁、更优雅、更省时的方法。
【问题讨论】: