iwannaher 发表于 2007-4-16 19:50

高手们来指导小妹一个作图的问题

     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作图知之甚少啊。

eight 发表于 2007-4-16 19:54

给你一个提示:


x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'--rs','LineWidth',2,...
                'MarkerEdgeColor','k',...
                'MarkerFaceColor','g',...
                'MarkerSize',10)


图例用 legend 命令

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怎么加进去呢?

eight 发表于 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=;


建议看看matlab基础书吧,论坛只是用作小问题的讨论,大问题或者无甚基础的问题很难帮你解决的

iwannaher 发表于 2007-4-16 20:18

如果是X轴的数据和Y轴的数据有公式的关系只用一个语句就实现了。可是它这个一一对应的倒不知道怎么弄了

eight 发表于 2007-4-16 20:38

原帖由 iwannaher 于 2007-4-16 20:18 发表
如果是X轴的数据和Y轴的数据有公式的关系只用一个语句就实现了。可是它这个一一对应的倒不知道怎么弄了


a = 0:2:12;
b = zeros(3,size(a,2));
b(1,:) = ;
b(2,:) = ;
b(3,:) = ;
plot(a,b(1,:),'ob-')
hold on;
plot(a,b(2,:),'sg-')
plot(a,b(3,:),'xr-')
ylim();
xlim();
hold off;
legend('128','256','512',0);
xlabel('SNR');
ylabel('MSE');


其余自己修改一下

iwannaher 发表于 2007-4-16 21:32

:loveliness: 呵呵,太感谢楼上的GG了。一些小细节的命令书上也没翻到,还是你好!

iwannaher 发表于 2007-4-16 21:50

还有个问题,b = zeros(3,size(a,2));这个命令是什么意思呢,参数不懂

eight 发表于 2007-4-16 21:52

原帖由 iwannaher 于 2007-4-16 21:50 发表
还有个问题,b = zeros(3,size(a,2));这个命令是什么意思呢,参数不懂


size(a,2) 返回的是a的第二维大小

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-')
ylim();
xlim();
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 编辑 ]

eight 发表于 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(); 为 xlim();

iwannaher 发表于 2007-4-16 22:15

不行啊,得出的图是原封不动的。改 xlim(); 为 xlim();不是等于没改吗?

eight 发表于 2007-4-16 22:26

原帖由 iwannaher 于 2007-4-16 22:15 发表
不行啊,得出的图是原封不动的。改 xlim(); 为 xlim();不是等于没改吗?


xlim那个是为了通用点

纵坐标你可以修改为ylim(),或更通用点:


step = mean(diff(a));
ylim();


[ 本帖最后由 eight 于 2007-4-16 22:29 编辑 ]

iwannaher 发表于 2007-4-17 08:36

我明白你的意思,但是照你的改法只能增加纵坐标的长度而不能细化纵坐标的刻度.也就是说许多靠近0的很小的数因为纵坐标的刻度很大显示出来的全是0轴上的一条直线了,而正常情况下应该是一条曲线.

iwannaher 发表于 2007-4-17 08:42

因为数据不少是在E-5级别的,也就是说如果能把纵坐标细化到10E-6到10E0,那么凸显在图中的点肯定很清楚了.
页: [1] 2
查看完整版本: 高手们来指导小妹一个作图的问题