声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1394|回复: 10

[绘图技巧] 画出的图形都是点...

[复制链接]
发表于 2009-2-27 21:24 | 显示全部楼层 |阅读模式

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

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

x
大家好!!我叫HP!
籍贯:广西柳州市,今年还很年轻,今年大三了,可以猜到是多大了。呵呵!平时学习软件这一块,但是不是非常精通。比较擅长的是asp网页设计。
最近在研究用matlab写高斯噪声,然后用来分析PSK抗噪声性能。我写了个函数,但是画出的图形好像和想象中的不一样,画出来的都是点……希望得到各位好友的帮忙。我的QQ号是272264246,或者我的邮箱是hp991@sina.com或者hp991@yahoo.cn

function[gsrv1,gsrv2]=gngauss(m,sgma)
if nargin==0,
m=0;sgma=1;
elseif nargin==1,
sgma=m;m=0;
end;
u=rand();
z=sgma*(sqrt(-2*log(1/(1-u))));
u=rand();
gsrv1=m+z*cos(2*pi*u);
gsrv2=m+z*sin(2*pi*u);

[ 本帖最后由 ChaChing 于 2009-2-27 22:02 编辑 ]
回复
分享到:

使用道具 举报

发表于 2009-2-27 21:58 | 显示全部楼层

回复 楼主 aachuangping 的帖子

画出的图形? LZ说清楚些吧!
发表于 2009-2-28 00:00 | 显示全部楼层

回复 楼主 aachuangping 的帖子

呵呵,没见到画图的函数
 楼主| 发表于 2009-2-28 13:52 | 显示全部楼层

回复 沙发 ChaChing 的帖子

哦~~!我是在命令窗口调用了plot(gngauss)函数。但是画出来的就是一条有点构成的水平线
我觉得很奇怪,难道是我的function程序错误?试试帮帮忙看~谢谢!
发表于 2009-2-28 14:31 | 显示全部楼层

回复 地板 aachuangping 的帖子

LZ这样画, 相当於画plot(gsrv1), 而gsrv1为一单点复数, 当然仅画出一点!
试试函数gngauss最後一行增加[gsrv1,gsrv2], 看看算出值, 并於命令窗口用plot(gngauss,'o'), 看看那一点是否就是gsrv1!
 楼主| 发表于 2009-2-28 15:00 | 显示全部楼层

回复 5楼 ChaChing 的帖子

你好chaching!谢谢你的及时回复。我试了试,但是画出来的就在水平位置为1,.高度约为0.5的一个小圈圈~~为什么呢?
除此之外,然后我在命令窗口中输入
u=rand(1,1000);
y=gngauss(1,0.02);
plot(u,y,'o');
最近得出的是一条由"O"形成的水平线。但是还是水平线。这是为什么呢??盼回复~~谢谢
发表于 2009-2-28 15:24 | 显示全部楼层

回复 6楼 aachuangping 的帖子

函數gngauss最後一行增加[gsrv1,gsrv2], ex
function[gsrv1,gsrv2]=gngauss(m,sgma)
if nargin==0, m=0;sgma=1; elseif nargin==1, sgma=m;m=0; end;
u=rand(); z=sgma*(sqrt(-2*log(1/(1-u))));
u=rand(); gsrv1=m+z*cos(2*pi*u); gsrv2=m+z*sin(2*pi*u);
[gsrv1,gsrv2]

gsrv1為一單點複數, 當然僅畫出一點!
執行y=gngauss(1,0.02); 輸出ans =   1.0000 - 0.0101i   1.0000 + 0.0059i
表示gsrv1=1-0.0101i,gsrv2=1+0.0059i
若plot(y,'o'), 看看那一點是否就是gsrv1! x=1為real part, y=-0.0101 為imag part
若plot(u,y,'o'), 因y為複數會出現警告Warning: Imaginary parts of complex X and/or Y arguments ignored, 此時等效plot(u,real(y),'o')

建议LZ看看Help文件!
发表于 2009-2-28 15:35 | 显示全部楼层
你的函数返回值是一个数,那样画应该是一条直线,试试下面的。
u=rand(1,1000);
y=[];
for i=1:length(u)
    y=[y,gngauss(u(i),0.02)];
end
plot(y,'.')

评分

1

查看全部评分

 楼主| 发表于 2009-2-28 16:36 | 显示全部楼层

回复 7楼 ChaChing 的帖子

哦~~这个我知道,就是我的虚部被忽略掉的意思~我是最近才开始自己研究matlab的东西,以前一直都在弄asp代码,所以有很多基础的地方不是很把握住,所以请包含啊~~(+_+),再加上本人的英语水平有限,所以......
所以希望能得到你们的帮助啦~
我通过以下这段命令;plot(t,real(y),'--');hold on;plot(t,imag(y),'--');好像也不正确哦??
可以给点意见吗?
 楼主| 发表于 2009-2-28 16:41 | 显示全部楼层

回复 8楼 friendchj 的帖子

嗯!!ok!我把它换成plot(y,'--')就得了~~真的很谢谢啊~~
在这里收益颇多啊~~感谢大家!!
如果大家又在asp方面不懂的,我会照顾大家的
发表于 2009-2-28 19:09 | 显示全部楼层
抱歉! 直到刚刚看到8楼大牛的程序, 才猜到LZ要画什麽样的图!
原来LZ是想检查函数产生的值, 是否真是噪声型态? 是吧?
水平有限, 还是需要LZ一开始说的更明白些! 但我也忘了问清楚:@L
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-4 10:25 , Processed in 0.058900 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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