找回密码
 注册
Simdroid-非首页
查看: 119|回复: 9

matlab 隐函数变成极坐标

[复制链接]
发表于 2011-7-22 07:49:24 | 显示全部楼层 |阅读模式 来自 陕西西安
怎样将在直角坐标下画出来的隐函数图形转化成极坐标的,求帮助
发表于 2011-7-22 11:00:46 | 显示全部楼层 来自 北京
Simdroid开发平台
获得数据点,计算极坐标值再计算

只是这样好像只有半个圆

  1. fig=ezplot('x^2+y^2-1')
  2. x=get(fig,'xdata');
  3. y=get(fig,'ydata');
  4. r=sqrt(x.^2+y.^2);
  5. theta=acos(y./r);polar(theta,r)
复制代码

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-7-22 21:04:59 | 显示全部楼层 来自 陕西西安
fig=ezplot('x^2+y^2-1')
x=get(fig,'xdata');
y=get(fig,'ydata');
r=sqrt(x.^2+y.^2);
theta=acos(y./r);polar(theta,r)
fig =
    1.520021972656250e+002
??? Error using ==> plus
Matrix dimensions must agree.

楼主你好 你的程序运行之后是这样
我吧我的程序给你看看  这个隐函数是在直角坐标下的图形,求转换为极坐标
clear all;close all
ezplot('100*((3/y^2-(1-2/y^2+3/y^4)*cos(2*x))^2+((1+2/y^2-3/y^4)*sin(2*x))^2)-25*(15+10/y^2*cos(2*x)-5*sqrt((3/y^2-(1-2/y^2+3/y^4)*cos(2*x))^2+((1+2/y^2-3/y^4)*sin(2*x))^2))-2.5',[0,2*pi]);
回复 不支持

使用道具 举报

发表于 2011-7-22 21:28:11 | 显示全部楼层 来自 LAN
  1. clear all;close all
  2. fig=ezplot('100*((3/y^2-(1-2/y^2+3/y^4)*cos(2*x))^2+((1+2/y^2-3/y^4)*sin(2*x))^2)-25*(15+10/y^2*cos(2*x)-5*sqrt((3/y^2-(1-2/y^2+3/y^4)*cos(2*x))^2+((1+2/y^2-3/y^4)*sin(2*x))^2))-2.5',[0,2*pi]);
  3. x=get(fig,'xdata');
  4. y=get(fig,'ydata');
  5. r=sqrt(x.^2+y.^2);
  6. theta=acos(y./r);
  7. figure;
  8. polar(theta,r)
复制代码



评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-7-22 22:33:53 | 显示全部楼层 来自 陕西西安
楼主,第一个图对着呢,那个图的x坐标就是度数,总共360,每一度对应一个数字,这样画出来应该是一个闭合的曲线,第二个图好像不对
回复 不支持

使用道具 举报

发表于 2011-7-22 22:57:41 | 显示全部楼层 来自 LAN
楼主没把问题说清楚,把 polar(theta,r) 改成 polar(x,y) 即可
回复 不支持

使用道具 举报

 楼主| 发表于 2011-7-22 23:03:42 | 显示全部楼层 来自 陕西西安
clear all;close all
fig=ezplot('100*((3/y^2-(1-2/y^2+3/y^4)*cos(2*x))^2+((1+2/y^2-3/y^4)*sin(2*x))^2)-25*(15+10/y^2*cos(2*x)-5*sqrt((3/y^2-(1-2/y^2+3/y^4)*cos(2*x))^2+((1+2/y^2-3/y^4)*sin(2*x))^2))-2.5',[0,2*pi]);
x=get(fig,'xdata');
y=get(fig,'ydata');
figure;
polar(x,y)
出现??? Error using ==> polar
THETA and RHO must be the same size.
还是不行啊
回复 不支持

使用道具 举报

 楼主| 发表于 2011-7-22 23:20:55 | 显示全部楼层 来自 陕西西安
楼主是个大好人,给我解决了一个大问题,帮人帮到底,非常的感谢楼主
回复 不支持

使用道具 举报

 楼主| 发表于 2011-7-23 14:12:32 | 显示全部楼层 来自 陕西西安
楼主,有个新问题,就是下面这张图,一个x对应很多y值,我只想取大于1的那些y值,其他的都和昨天的一样,这个要怎么定义啊这个是新的程序
clear all;close all
ezplot('100*((3/(2*y^2)+1/2*(1-2/y^2+3/y^4)*cos(2*x))^2+1/4*((1+2/y^2-3/y^4)*sin(2*x))^2)-25*(7.5+5/y^2*cos(2*x)-5*sqrt((3/(2*y^2)+1/2*(1-2/y^2+3/y^4)*cos(2*x))^2+1/4*((1+2/y^2-3/y^4)*sin(2*x))^2))-2.5',[0,2*pi])
x=get(fig,'xdata');
y=get(fig,'ydata');
r=sqrt(x.^2+y.^2);
theta=acos(y./r);
figure;
polar(x,y)
回复 不支持

使用道具 举报

 楼主| 发表于 2011-7-23 14:13:13 | 显示全部楼层 来自 陕西西安
图片弄不上去了
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-6 10:35 , Processed in 0.050110 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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