考虑下面给出的一个例子。有三个客户,A,B,C。第一行是各自客户的需求,第二排是他们需要的日子。例如:需求A=10,40,50;15,45,75;客户A在第15天需要10件商品。第45天40项,第75次day..Similarly 50项。
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
发布于 2016-06-25 14:34:55
我建议采取以下办法:
第一阶段
生成一个新的矩阵,它是A、B和C的组合,这样:第一个表示日期。第二个数字表示所要求的金额。第三是消费者指数(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
https://stackoverflow.com/questions/38029408
复制相似问题