声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2341|回复: 8

[图像处理] 为什么用matlab里的fplot函数画这个图画不出来。

[复制链接]
发表于 2011-8-26 16:17 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 TDF 于 2011-8-26 16:17 编辑

fplot(@(x) (.40000000000000000000000000000000x-1*x^2*(153130000.*x^7+7200000.*x^6+128590588.*x^5-1042800000.*x^4*1+18155520.*x^4+442224000.*x^3*1-1373422025.*x^3-613788000.*x^2*1+40050000.*x^2-444125000.*x-1237500000.*x*1+1110000000.*1)^2/(54933120.*x^5-692013260.*x^6-186265991563.*x^4-48614675000.*x^2+229500000.*x^3+3800000000.+15381150000.*x^8)^2+.10000000000000000000000000000000x-1*(252810000.*x^8+16320000.*x^7-250351044.*x^6+15211872.*x^5+86400000.*x^5*1+21590628000.*x^4*1-2511119625.*x^4-17595000.*x^3+21600000.*x^3*1-80711825000.*x^2*1+165000000.*x^2+5000000000.*1)^2/(54933120.*x^5-692013260.*x^6-186265991563.*x^4-48614675000.*x^2+229500000.*x^3+3800000000.+15381150000.*x^8)^2)^(1/2)/1,[0 4 0 2])
老是提示错误
Error: Missing MATLAB operator.


我用同样的命令画化了十几个同样类型的图都能画出来,可是画到这个时就不行了。我重启MATLAB,重新计算,重新试了好多遍,别的图都可以,就这个图老是提示这个错误。这是为什么呢?在下刚接触MATLAB,还请高人指教啊。
感激不尽!
回复
分享到:

使用道具 举报

发表于 2011-8-27 01:32 | 显示全部楼层
那麼长的式子, 真懒得帮检!
建议分段或简化下, 一步步试试看! 若是我也是如此
等待LZ分享成果!
 楼主| 发表于 2011-8-27 09:09 | 显示全部楼层
实际上式子并没有错,可能是程序的问题吧。我把变量名一改。图就画出来了,我也搞不懂是什么原因。
发表于 2011-8-27 11:49 | 显示全部楼层
 楼主| 发表于 2011-8-27 15:15 | 显示全部楼层
fplot(@(e) (.40000000000000000000000000000000e-1*e^2*(153130000.*e^7+7200000.*e^6+128590588.*e^5-1042800000.*e^4*1+18155520.*e^4+442224000.*e^3*1-1373422025.*e^3-613788000.*e^2*1+40050000.*e^2-444125000.*e-1237500000.*e*1+1110000000.*1)^2/(54933120.*e^5-692013260.*e^6-186265991563.*e^4-48614675000.*e^2+229500000.*e^3+3800000000.+15381150000.*e^8)^2+.10000000000000000000000000000000e-1*(252810000.*e^8+16320000.*e^7-250351044.*e^6+15211872.*e^5+86400000.*e^5*1+21590628000.*e^4*1-2511119625.*e^4-17595000.*e^3+21600000.*e^3*1-80711825000.*e^2*1+165000000.*e^2+5000000000.*1)^2/(54933120.*e^5-692013260.*e^6-186265991563.*e^4-48614675000.*e^2+229500000.*e^3+3800000000.+15381150000.*e^8)^2)^(1/2)/1,[0 4 0 2])
得到下面的图:
clip_image002.jpg
我就是把变量名x变成了e,就出来了。其他的几个图都不用改的。但是一换回 x,就没画出来。而其他的几个式子不论怎样改都能画出来。至于具体原因我自己也搞不清楚。可能是软件的原因?
发表于 2011-8-28 21:03 | 显示全部楼层
本帖最后由 ChaChing 于 2011-8-28 21:04 编辑

回复 1 # TDF 的帖子

使用LZ 1F的式子, 我的R2009a版本会报错
Error: Unexpected MATLAB expression.

细看LZ的式子, 有两个地方係数与符号(x)间并无乘号(*)
  1. fplot(@(x) (.4*x-1*x^2*(153130000.*x^7+7200000.*x^6+128590588.*x^5-1042800000.*x^4*1+18155520.*x^4+442224000.*x^3*1-1373422025.*x^3-613788000.*x^2*1+40050000.*x^2-444125000.*x-1237500000.*x*1+1110000000.*1)^2/(54933120.*x^5-692013260.*x^6-186265991563.*x^4-48614675000.*x^2+229500000.*x^3+3800000000.+15381150000.*x^8)^2+.1*x-1*(252810000.*x^8+16320000.*x^7-250351044.*x^6+15211872.*x^5+86400000.*x^5*1+21590628000.*x^4*1-2511119625.*x^4-17595000.*x^3+21600000.*x^3*1-80711825000.*x^2*1+165000000.*x^2+5000000000.*1)^2/(54933120.*x^5-692013260.*x^6-186265991563.*x^4-48614675000.*x^2+229500000.*x^3+3800000000.+15381150000.*x^8)^2)^(1/2)/1,[0 4 0 2])
复制代码
出来的图如下
zzz.jpg

发表于 2011-8-28 21:24 | 显示全部楼层
回复 5 # TDF 的帖子

至於LZ把变量名x变成了e, 就可输出图了, 那是画不同函数的图
本来.4x-1*x^2*...的式子变成.4e-1*e^2*..., 因本来就少个乘号(*), 变成了数字次方的意义了
若把那些该有的乘号补齐, 一样会画出正确的图, 如6F
试试下列代码, LZ应该就明瞭
  1. feval(@(e) .4e-1,0)      % =0.04
  2. feval(@(e) .4*e-1,0)     % =0.4*(0)-1
  3. feval(@(e) .4e-1*e^2,0)  % =0.04*(0)^2
  4. feval(@(e) .4e-1*e^2,1)  % =0.04*(1)^2
复制代码
发表于 2011-8-28 21:48 | 显示全部楼层
本帖最后由 ChaChing 于 2011-8-28 21:53 编辑

还有使用习惯不同, 个人比较喜欢整理下, LZ参考下
fplot与ezplot两者的不同, 藉由LZ的帖子, 个人著实练习了下也学习一些

  1. syms x
  2. dd=(54933120.*x^5-692013260.*x^6-186265991563.*x^4-48614675000.*x^2+229500000.*x^3+3800000000.+15381150000.*x^8)^2;
  3. nn1= (153130000.*x^7+7200000.*x^6+128590588.*x^5 -1042800000.*x^4*1+18155520.*x^4 ...
  4.             +442224000.*x^3*1-1373422025.*x^3 -613788000.*x^2*1+40050000.*x^2 -444125000.*x-1237500000.*x*1+1110000000.*1)^2;
  5. nn2=(252810000.*x^8+16320000.*x^7-250351044.*x^6 +15211872.*x^5+86400000.*x^5*1 ...
  6.             +21590628000.*x^4*1-2511119625.*x^4-17595000.*x^3+21600000.*x^3*1-80711825000.*x^2*1+165000000.*x^2+5000000000.*1)^2;
  7. ff1=(.4*x-1*x^2*nn1/dd +.1*x-1*nn2/dd)^(1/2)/1;
  8. ezplot(ff1,[0 4 0 2],1);
复制代码

zzz.jpg
注意ezplot与fplot的图好像有稍许不同, 猜测係画图的点数多寡造成, 没时间细究, LZ可以试试差异
 楼主| 发表于 2011-8-29 16:02 | 显示全部楼层
汗,为您的敬业精神敬佩啊!吸取了教训。多谢多谢
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-25 21:42 , Processed in 0.086919 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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