请问怎么在矩阵后面新写入一列排名

2019-07-17 13:39发布

添加排名之前: 添加排名前.jpg 添加排名之后: 添加排名后.jpg

请问我想写一段程序,在提取的矩阵中的最后一列添加一列“排名”项(本来2列,添加之后3列,在第3列中添加排名),如图所示,之前排序的功能我已用sort函数实现,现在想知道怎么实现上图的功能,求程序啊,本人新手,万分感谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
ningkui
1楼-- · 2019-07-17 17:12
LZ做个execl表格直接导入啊不更简单
ccly0208
2楼-- · 2019-07-17 22:27
其实这种不好用矩阵表示,因为数据格式不一样。最好的方法是matlab中的table或cell,推荐table。第一列是券商,第二列是市盈率,第三列是排名。为了实现你说的排名方法,应该在加两列,倒腾数据用,然后删除。假设券商m个,

temp = cell(m,4);
tab = cell2table(temp,'VariableNames',{'trader','earning','ranking','dummy1','dummy2'});
tab.trader = {'券商1';  '券商2’};  % 你把你提取出来的名字写成列向量。
tab.earning = 市盈率列向量;
tab.dummy1 = (1:m)'  % 其实是券商的序号
sortrows(tab,'earning','descend') ;  %按市盈率从高到低排名,你的是从低到高,那就把descend删掉。
tab.dummy2 = (1:m)' ; %排名
for ii = 1:m
     tab.ranking{ii}=strcat(num2str(tab.dummy2(ii)),'/',num2str(m));
end

如果是按排名顺序,现在删掉多余的列即可;
tab(:,'dummy1')=[];
tab(:,'dummy2') = [];

如果按券商开始的顺序排名,那么还要倒腾一下。
sortrows(tab, 'dummy1');

然后删除多余的列。

一周热门 更多>