声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2003|回复: 16

[绘图技巧] 高手们来指导小妹一个作图的问题

[复制链接]
发表于 2007-4-16 19:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
     SNR        0dB        2dB        4dB        6dB        8dB        10dB        12dB
PN长度                                                       
128        2.07E-02        1.22E-02        7.10E-03        4.20E-03        2.60E-03        1.60E-03        9.89E-04
256        2.20E-03        1.20E-03        7.17E-04        4.36E-04        2.71E-04        1.73E-04        1.31E-04
512        1.98E-04        1.12E-04        6.88E-05        4.49E-05        3.12E-05        2.30E-05        1.80E-05

如何通过上面的数据做出图中的信噪比与均方误差的关系图来啊。高手们能不能写一下程序啊,应该不会很难的,小妹对matlab作图知之甚少啊。
2.gif
回复
分享到:

使用道具 举报

发表于 2007-4-16 19:54 | 显示全部楼层
给你一个提示:


  1. x = -pi:pi/10:pi;
  2. y = tan(sin(x)) - sin(tan(x));
  3. plot(x,y,'--rs','LineWidth',2,...
  4.                 'MarkerEdgeColor','k',...
  5.                 'MarkerFaceColor','g',...
  6.                 'MarkerSize',10)
复制代码


图例用 legend 命令
 楼主| 发表于 2007-4-16 19:57 | 显示全部楼层
但是这些数据2.07E-02        1.22E-02        7.10E-03        4.20E-03        2.60E-03        1.60E-03        9.89E-04怎么加进去呢?
发表于 2007-4-16 20:01 | 显示全部楼层
原帖由 iwannaher 于 2007-4-16 19:57 发表
但是这些数据2.07E-02        1.22E-02        7.10E-03        4.20E-03        2.60E-03        1.60E-03        9.89E-04怎么加进去呢?



a=[2.07E-02        1.22E-02        7.10E-03        4.20E-03        2.60E-03        1.60E-03        9.89E-04];


建议看看matlab基础书吧,论坛只是用作小问题的讨论,大问题或者无甚基础的问题很难帮你解决的
 楼主| 发表于 2007-4-16 20:18 | 显示全部楼层
如果是X轴的数据和Y轴的数据有公式的关系只用一个语句就实现了。可是它这个一一对应的倒不知道怎么弄了
发表于 2007-4-16 20:38 | 显示全部楼层
原帖由 iwannaher 于 2007-4-16 20:18 发表
如果是X轴的数据和Y轴的数据有公式的关系只用一个语句就实现了。可是它这个一一对应的倒不知道怎么弄了


  1. a = 0:2:12;
  2. b = zeros(3,size(a,2));
  3. b(1,:) = [2.07E-02        1.22E-02        7.10E-03        4.20E-03        2.60E-03        1.60E-03        9.89E-04];
  4. b(2,:) = [2.20E-03        1.20E-03        7.17E-04        4.36E-04        2.71E-04        1.73E-04        1.31E-04];
  5. b(3,:) = [1.98E-04        1.12E-04        6.88E-05        4.49E-05        3.12E-05        2.30E-05        1.80E-05];
  6. plot(a,b(1,:),'ob-')
  7. hold on;
  8. plot(a,b(2,:),'sg-')
  9. plot(a,b(3,:),'xr-')
  10. ylim([min(b(:)) max(b(:))]);
  11. xlim([0 12]);
  12. hold off;
  13. legend('128','256','512',0);
  14. xlabel('SNR');
  15. ylabel('MSE');
复制代码


其余自己修改一下
 楼主| 发表于 2007-4-16 21:32 | 显示全部楼层
:loveliness: 呵呵,太感谢楼上的GG了。一些小细节的命令书上也没翻到,还是你好!
 楼主| 发表于 2007-4-16 21:50 | 显示全部楼层
还有个问题,b = zeros(3,size(a,2));这个命令是什么意思呢,参数不懂
发表于 2007-4-16 21:52 | 显示全部楼层
原帖由 iwannaher 于 2007-4-16 21:50 发表
还有个问题,b = zeros(3,size(a,2));这个命令是什么意思呢,参数不懂



size(a,2) 返回的是a的第二维大小
 楼主| 发表于 2007-4-16 22:01 | 显示全部楼层
一个举一反三的问题,还是将就你的程序稍微改动了一下,然后换了其他的数据
a = 0.1:0.1:0.9;
b = zeros(3,size(a,2));
b(1,:) = [5.16E-06        5.74E-06        2.80E-05        1.37E-05        1.00        1.01       0.99       1.00       1.01];
b(2,:) = [4.87E-05        4.12E-05        4.80E-05        4.49E-05        6.27E-05        7.55E-05        8.69E-05        9.86E-05        1.10E-04];
plot(a,b(1,:),'ob-')
hold on;
plot(a,b(2,:),'sg-')
ylim([min(b(:)) max(b(:))]);
xlim([0.1 0.9]);
hold off;
legend('The length of PN is 512','The length of PN is 1024',0);
xlabel('SNR');
ylabel('MSE');得出的图倒肯定是对的,只是因为数据太小了,以至于纵坐标无法显示出来那些点出来。
一定是这个命令b = zeros(3,size(a,2));还得修改一下。

[ 本帖最后由 iwannaher 于 2007-4-16 22:05 编辑 ]
untitled.gif
发表于 2007-4-16 22:07 | 显示全部楼层
原帖由 iwannaher 于 2007-4-16 22:01 发表
一个举一反三的问题,还是将就你的程序稍微改动了一下,然后换了其他的数据
a = 0.1:0.1:0.9;
b = zeros(3,size(a,2));
b(1,:) = ;
b(2,:) = ;
plot(a,b(1,:),'ob-')
hold on;
plot(a,b(2,:),'sg-')
yl ...



改 b = zeros(3,size(a,2)); 为 b = zeros(2,size(a,2));
改 xlim([0.1 0.9]); 为 xlim([min(a) max(a)]);
 楼主| 发表于 2007-4-16 22:15 | 显示全部楼层
不行啊,得出的图是原封不动的。改 xlim([0.1 0.9]); 为 xlim([min(a) max(a)]);不是等于没改吗?
发表于 2007-4-16 22:26 | 显示全部楼层
原帖由 iwannaher 于 2007-4-16 22:15 发表
不行啊,得出的图是原封不动的。改 xlim(); 为 xlim();不是等于没改吗?



xlim那个是为了通用点

纵坐标你可以修改为ylim([min(b(:))-0.1,max(b(:))+0.1]),或更通用点:


  1. step = mean(diff(a));
  2. ylim([min(b(:))-step,max(b(:))+step]);
复制代码

[ 本帖最后由 eight 于 2007-4-16 22:29 编辑 ]
 楼主| 发表于 2007-4-17 08:36 | 显示全部楼层
我明白你的意思,但是照你的改法只能增加纵坐标的长度而不能细化纵坐标的刻度.也就是说许多靠近0的很小的数因为纵坐标的刻度很大显示出来的全是0轴上的一条直线了,而正常情况下应该是一条曲线.
 楼主| 发表于 2007-4-17 08:42 | 显示全部楼层
因为数据不少是在E-5级别的,也就是说如果能把纵坐标细化到10E-6到10E0,那么凸显在图中的点肯定很清楚了.
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-24 15:29 , Processed in 0.065234 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表