考虑下面给出的一个例子。有3个客户A,B,C。 矩阵的第一行是各个客户的需求,第二行是他们需要的日子。 例如:需求A = [10,40,50; 15,45,75];顾客A在第15天需要10件物品。第45天40件,第75天50件。类似于B,C。
demand A=[10,40,50;15,45,75];
demand B=[80,30,20;05,35,80];
demand C=[50,40,30;20,47,88];
现在我需要根据天数对客户进行排名。所以这里的回答应该是这样的 等级1:第5天客户B 80项 等级2:第15天客户A 10项 等级3:第20天客户C 50项。 等等。
我怎样才能在垫子实验室里做到这一点。因此,当我根据当天排名时,我应该知道有多少项目和哪个客户。
输出应该是这样的:
Rank Customer items day
1 B 80 05
2 A 10 15
3 C 50 20
4 B 30 35
5 A 40 45
6 C 40 47
7 A 40 75
8 B 20 80
9 C 30 88
答案 0 :(得分:0)
我建议采用以下方法:
第一阶段
生成一个新矩阵,它是A,B和C的组合,这样: 第一个col代表当天。 第二个col代表请求的数量。 第三列是客户指数(A = 1,B = 2,C = 3)。
res = [A',ones(size(A',1),1);B',ones(size(A',1),1)*2;C',ones(size(C',1),1)*3];
res(:,[2,1]) = res(:,[1,2]);
第二阶段
根据表示日期的第一列
对矩阵进行排序[~,sortedDaysIndices] = sort(res(:,1));
res = res(sortedDaysIndices,:);
第三阶段:打印结果
for ii=1:size(res)
if res(ii,3)==1
costumerStr = 'A';
elseif res(ii,3)==2
costumerStr = 'B';
else
costumerStr = 'C';
end
fprintf('%s\n',[num2str(ii) ' ' costumerStr ' ' num2str(res(ii,2)) ' ' num2str(res(ii,1))])
end
<强>结果强>
1 B 80 5
2 A 10 15
3 C 50 20
4 B 30 35
5 A 40 45
6 C 40 47
7 A 50 75
8 B 20 80
9 C 30 88