专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
matlab
请问怎么在矩阵后面新写入一列排名
2019-07-17 13:39
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
matlab
7995
2
1715
添加排名之前:
添加排名之后:
请问我想写一段程序,在提取的矩阵中的最后一列添加一列“排名”项(本来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');
然后删除多余的列。
加载中...
一周热门
更多
>
相关问题
分享:用MATLAB写STM32算法
19 个回答
求高手指导MATLAB图形
2 个回答
请教高手求解方程组含有三角函数
2 个回答
请教已知离散点坐标(X,Y非均匀分布),如何用matlab绘制曲面图
2 个回答
请问各位,在Matlab中遇到积分无穷大怎么处理?
1 个回答
squ_ad这个函数matlab自己有么
6 个回答
关于相位移位的疑问
1 个回答
求助GUI方面的问题
2 个回答
相关文章
编写的Matlab程序在运行一段时间后速度会变慢
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
matlab
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
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');
然后删除多余的列。
一周热门 更多>