查看: 817|回复: 6|关注: 0

[已解决] 错误使用 plot 数据必须为可转换为双精度值的数值、日期时间、持续时间或数组

[复制链接]

新手

12 麦片

财富积分


050


2

主题

7

帖子

0

最佳答案
MATLAB中,总是遇到这个问题,仔细检查过代码也没发现问题,求大神给与指导
以下为源代码
syms x m n
r=0:0.05:2;
q=0.0028437;
p=38.177;
w=0.34;
t=r+0.34;
a=2.*(pi);
c=3/32.*(pi).*(pi).*r.*q.*(p.^2).*(w.^6);
d=((1./(r.^2+t-2.*r.*t.*(cos(x)))).^(5/2).*(-32+21.*(w.^6)./((r.^2+t-2.*r.*t.*(cos(x))).^3)));
e=int(d,0,a);
f=c.*e;
g=-2835.*(128.*(t.^9)+2304.*(r.^2).*(t.^7)+6048.*(r.^4).*(t.^5)+3360.*(r.^6).*(t.^3)+315.*(r.^8).*t);
h=1./128.*(98+36./5-2./63).*(1./(9.*8.*7.*6.*5.*4.*3.*2.*1).*4.*g./((t.^2)-(r.^2)).^9.5);
i=4./3.*1./(3.*2).*4.*(-6.*(t.^3)-9.*(r.^2).*t)./((t.^2)-(r.^2)).^3.5;
j=0.5.*(p.^2).*r.*(atan((-t+r)./sqrt((t.^2)-(r.^2)))-atan((t+r)./sqrt((t.^2)-(r.^2)))).*(4.*q.*(w.^12).*63.*pi./256.*h-4.*q.*(w.^6).*3.*pi./8.*i);
m=5.*(f+j);
plot(r,m);
hold on;
b=-0.7.*a;
n=8.*b./t;
plot(r,n);
回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

19

主题

2401

帖子

492

最佳答案
  • 关注者: 96
发表于 2020-8-11 11:41:44 | 显示全部楼层
你怎么仔细检查的代码哟?
多看帮助文档
说明你的matlab版本
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


2

主题

7

帖子

0

最佳答案
 楼主| 发表于 2020-8-11 11:59:14 | 显示全部楼层
深蓝孩童 发表于 2020-8-11 11:41
你怎么仔细检查的代码哟?

是哪里有问题吗,我没有发现,还请大神指明
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

19

主题

2401

帖子

492

最佳答案
  • 关注者: 96
发表于 2020-8-11 12:48:51 | 显示全部楼层
Shmily_lwV12 发表于 2020-8-11 11:59
是哪里有问题吗,我没有发现,还请大神指明

首先,你错在哪里了。。。你应该发帖的时候指出来。。。

你的17行plot错了,所以肯定是错误中提示的原因。因为你用了符号变量,所以你的m是符号变量,r是数值。plot不能用于符号变量。
多看帮助文档
说明你的matlab版本
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


2

主题

7

帖子

0

最佳答案
 楼主| 发表于 2020-8-11 14:39:01 | 显示全部楼层
深蓝孩童 发表于 2020-8-11 12:48
首先,你错在哪里了。。。你应该发帖的时候指出来。。。

你的17行plot错了,所以肯定是错误中提示的原因 ...

错误提示就是题目,我这个代码是仿照之前一个代码做的,那个是对的,但是这个是错的,我也试过用double,也不对,麻烦问一下应该怎么改啊,谢谢
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

19

主题

2401

帖子

492

最佳答案
  • 关注者: 96
发表于 2020-8-11 15:14:32 | 显示全部楼层 |此回复为最佳答案
Shmily_lwV12 发表于 2020-8-11 14:39
错误提示就是题目,我这个代码是仿照之前一个代码做的,那个是对的,但是这个是错的,我也试过用double, ...

嗐。将你代码中的符号变量都去掉。
积分部分出现一些问题,你仔细检查一下你的公式对不对。
  1. r=0:0.05:2;
  2. q=0.0028437;
  3. p=38.177;
  4. w=0.34;
  5. t=r+0.34;
  6. a=2*pi;
  7. c=3/32.*(pi).*(pi).*r.*q.*(p.^2).*(w.^6);

  8. d = @(x) ((1./(r.^2+t-2.*r.*t.*(cos(x)))).^(5/2).*(-32+21.*(w.^6)./((r.^2+t-2.*r.*t.*(cos(x))).^3)))
  9. e = integral(d, 0, a, "ArrayValued", 1)

  10. f=c.*e;
  11. g=-2835.*(128.*(t.^9)+2304.*(r.^2).*(t.^7)+6048.*(r.^4).*(t.^5)+3360.*(r.^6).*(t.^3)+315.*(r.^8).*t);
  12. h=1./128.*(98+36./5-2./63).*(1./(9.*8.*7.*6.*5.*4.*3.*2.*1).*4.*g./((t.^2)-(r.^2)).^9.5);
  13. i=4./3.*1./(3.*2).*4.*(-6.*(t.^3)-9.*(r.^2).*t)./((t.^2)-(r.^2)).^3.5;
  14. j=0.5.*(p.^2).*r.*(atan((-t+r)./sqrt((t.^2)-(r.^2)))-atan((t+r)./sqrt((t.^2)-(r.^2)))).*(4.*q.*(w.^12).*63.*pi./256.*h-4.*q.*(w.^6).*3.*pi./8.*i);
  15. m=5.*(f+j);

  16. plot(r,m);
  17. hold on;
  18. b=-0.7.*a;
  19. n=8.*b./t;
  20. plot(r,n);
复制代码

多看帮助文档
说明你的matlab版本
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


2

主题

7

帖子

0

最佳答案
 楼主| 发表于 2020-8-11 15:31:14 | 显示全部楼层
深蓝孩童 发表于 2020-8-11 15:14
嗐。将你代码中的符号变量都去掉。
积分部分出现一些问题,你仔细检查一下你的公式对不对。

谢谢谢谢,:handshake
回复此楼 已获打赏: 0 积分

举报

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

本版积分规则

关闭

站长推荐上一条 /4 下一条

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