高手们来指导小妹一个作图的问题
SNR 0dB 2dB 4dB 6dB 8dB 10dB 12dBPN长度
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作图知之甚少啊。 给你一个提示:
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 命令 但是这些数据2.07E-02 1.22E-02 7.10E-03 4.20E-03 2.60E-03 1.60E-03 9.89E-04怎么加进去呢? 原帖由 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基础书吧,论坛只是用作小问题的讨论,大问题或者无甚基础的问题很难帮你解决的 如果是X轴的数据和Y轴的数据有公式的关系只用一个语句就实现了。可是它这个一一对应的倒不知道怎么弄了 原帖由 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');
其余自己修改一下 :loveliness: 呵呵,太感谢楼上的GG了。一些小细节的命令书上也没翻到,还是你好! 还有个问题,b = zeros(3,size(a,2));这个命令是什么意思呢,参数不懂 原帖由 iwannaher 于 2007-4-16 21:50 发表
还有个问题,b = zeros(3,size(a,2));这个命令是什么意思呢,参数不懂
size(a,2) 返回的是a的第二维大小 一个举一反三的问题,还是将就你的程序稍微改动了一下,然后换了其他的数据
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 编辑 ] 原帖由 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(); 不行啊,得出的图是原封不动的。改 xlim(); 为 xlim();不是等于没改吗? 原帖由 iwannaher 于 2007-4-16 22:15 发表
不行啊,得出的图是原封不动的。改 xlim(); 为 xlim();不是等于没改吗?
xlim那个是为了通用点
纵坐标你可以修改为ylim(),或更通用点:
step = mean(diff(a));
ylim();
[ 本帖最后由 eight 于 2007-4-16 22:29 编辑 ] 我明白你的意思,但是照你的改法只能增加纵坐标的长度而不能细化纵坐标的刻度.也就是说许多靠近0的很小的数因为纵坐标的刻度很大显示出来的全是0轴上的一条直线了,而正常情况下应该是一条曲线. 因为数据不少是在E-5级别的,也就是说如果能把纵坐标细化到10E-6到10E0,那么凸显在图中的点肯定很清楚了.
页:
[1]
2