首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Matlab编程、矩阵排序和排序

Matlab编程、矩阵排序和排序
EN

Stack Overflow用户
提问于 2016-06-25 14:15:09
回答 1查看 38关注 0票数 0

考虑下面给出的一个例子。有三个客户,A,B,C。第一行是各自客户的需求,第二排是他们需要的日子。例如:需求A=10,40,50;15,45,75;客户A在第15天需要10件商品。第45天40项,第75次day..Similarly 50项。

代码语言:javascript
运行
复制
 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项。诸若此类。

我怎么能在垫子实验室做这件事。这样,当我根据一天对它进行排序时,我就应该知道有多少商品,以及相应的哪个客户。

产出应如下:

代码语言:javascript
运行
复制
                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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-25 14:34:55

我建议采取以下办法:

第一阶段

生成一个新的矩阵,它是A、B和C的组合,这样:第一个表示日期。第二个数字表示所要求的金额。第三是消费者指数(A=1,B=2,C=3)。

代码语言:javascript
运行
复制
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]);

二级

根据表示日期的第一列对矩阵进行排序。

代码语言:javascript
运行
复制
[~,sortedDaysIndices] = sort(res(:,1));
res = res(sortedDaysIndices,:);

第三阶段:打印结果

代码语言:javascript
运行
复制
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

结果

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38029408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档