找回密码
 注册
关于网站域名变更的通知
查看: 1376|回复: 5
打印 上一主题 下一主题

Matlab绘图,代码无报错,但绘图只有坐标轴没有图像,请大神指导

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-7-27 14:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
t=0:0.001: (13*pi/18)2 O' `9 u' l9 ~5 O+ O6 b8 p0 [8 ^
x=-(50+32.5*(1-cos(t*18*pi/(13*pi)))).*sin(t)-15*cos(t)& N0 U- D. c7 W3 ^5 `+ K
y=(50+32.5*(1-cos(t*18*pi/(13*pi)))).*cos(t)-15*sin(t): E  u* ]% {' l/ c  b) ?+ o) u
dx1=diff(x)
- e/ X: `' J# cdy1=diff(y)
& H5 B8 ^# s; E8 Bdx11=diff(x,2)) x1 L6 q* |( k9 z  }! h# e" }5 g5 c
dy11=diff(y,2)2 y+ K( T: K1 B) p& g+ L

# x1 G; r9 Q8 n4 _0 Lp=abs(sqrt((dx1.^2+dy1.^2).^3)/(dx1.*dy11-dy1.*dx11))6 X/ z+ t& L0 s& i9 z5 [. R7 f
hold on
$ x, c- t, i- {# S6 a6 Dplot(t,p)
' y* c0 v* r) c, U6 c  ]6 o运算时报错矩阵维度必须一致,然后我尝试改了一下。。
+ B4 Q% k6 Y" t0 Vt=0:0.001: (13*pi/18)" B, |8 M$ G9 B' o2 v
x=-(50+32.5*(1-cos(t*18*pi/(13*pi)))).*sin(t)-15*cos(t)+ S% Q7 A+ V( z3 W4 H" q2 H) _
y=(50+32.5*(1-cos(t*18*pi/(13*pi)))).*cos(t)-15*sin(t)
! g- y) z5 H. u4 Udx1=diff(x)
7 X' ^- p& \7 a" i4 ~: f: Mdy1=diff(y)5 O# \9 g. A' F8 T
dx11=diff(x,2)" z0 O9 G  y9 z5 l
dy11=diff(y,2)
/ D5 m$ ^8 X6 T1 w( h( A( v' g6 \+ ~1 h( o0 J

9 J' N5 V. Q$ P# f: Y  Ddx1=dx1(1:length(dx11))1 b& L, N4 L! ]# g9 ]" G
dy1=dx1(1:length(dy11))
& R  O% r9 o4 W" W
& M* m: x. |# d) e4 l# T0 Q
0 z7 P/ @+ U( L' X; ip=abs(sqrt((dx1.^2+dy1.^2).^3)/(dx1.*dy11-dy1.*dx11))
/ `2 N! y9 H6 w4 w% w, T' Q6 [* Zhold on1 T/ ^8 \* U, ^8 T. o
plot(t,p)
" U1 D  ~( |2 I这个时候代码无报错,但绘图只有坐标轴没有图像* w1 R1 c, z& |7 H
& s* x) }+ R5 D' `9 N
希望大神们可以给小弟指一指错误,谢谢大家% W* `4 E1 R/ O0 k4 t) e' ?

" P% l8 E* s0 N1 t% n
  • TA的每日心情

    2019-11-20 15:22
  • 签到天数: 2 天

    [LV.1]初来乍到

    3#
    发表于 2020-7-27 18:31 | 只看该作者
    ) O6 @* U0 X- T1 C
    按照你的代码p是定值,你少写了一个点,正确代码如下3 S& y/ x/ x$ F9 o
    p=abs(sqrt((dx1.^2+dy1.^2).^3)./(dx1.*dy11-dy1.*dx11))

    该用户从未签到

    4#
    发表于 2020-7-27 18:32 | 只看该作者
    不是点运算的问题,是离散向量求差分的时候,长度会比原向量少阶数个元素(一阶差分少一个,二阶少两个),你先设置的t向量不可能和后面用差分求出来的p有相同维度的。既然原始的x和y都是t的简单函数,那就直接用解析式求精确微分(而不是用离散向量求差分)。* r& p4 U' P  C
    改成( y( O6 L8 q1 e$ G3 n( F. p
    syms t' U6 @- k* N) g2 N' e, `, a
    x = -(50+32.5*(1-cos(t*18*pi/(13*pi)))).*sin(t)-15*cos(t);* A! h7 d+ Z+ V" t& p
    y = (50+32.5*(1-cos(t*18*pi/(13*pi)))).*cos(t)-15*sin(t);3 ~7 P1 ?% E- J# U
    dx1 = diff( x );
    ; k' ]) F' `8 r$ [# Hdy1 = diff( y );
    2 ?' b9 f# W; [: F0 v2 v& pdx11 = diff( x, 2 );9 ]0 `0 L/ `% J
    dy11 = diff( y, 2 );
    . z0 u* I7 |' k) wp = abs(sqrt((dx1.^2+dy1.^2).^3)./(dx1.*dy11-dy1.*dx11));
    6 T. ?% E1 d3 x. D9 K- SPFunction = matlabFunction( p );
    8 W' \3 I0 l* D* ~5 [! t  t9 k) `t = 0 : 0.001 : (13*pi/18);
    8 w% k# T. d" L" R# j8 {9 jp = PFunction( t );6 p/ q% ^" g) I% z" v' u
    plot( t, p )

    点评

    按照你的回答我运行了一下,结果得出的图像感觉有点奇怪。。不太像是曲率半径的图像。 然后我又按照解析式求导,把得出来的公式输入进去,代码可以正常运算了,但是还是只有坐标轴,绘制不出来图像是怎么回事呀。。  详情 回复 发表于 2020-7-27 18:34

    该用户从未签到

    5#
     楼主| 发表于 2020-7-27 18:34 | 只看该作者
    thinkfunny 发表于 2020-7-27 18:32
    3 [2 M+ Z. x6 M8 g# f* @不是点运算的问题,是离散向量求差分的时候,长度会比原向量少阶数个元素(一阶差分少一个,二阶少两个), ...

    2 p8 w6 a, r$ k! B  K8 k5 S按照你的回答我运行了一下,结果得出的图像感觉有点奇怪。。不太像是曲率半径的图像。
    % `5 K! ?/ r" N# |" p  x$ M( y然后我又按照解析式求导,把得出来的公式输入进去,代码可以正常运算了,但是还是只有坐标轴,绘制不出来图像是怎么回事呀。。! ~! g8 U6 m/ [* r7 X' j
    这是改正后的代码1 m& y/ ]! D* g: k3 F- O0 j
    t=0:0.001: (13*pi/18)
    1 r0 p3 E; s6 W) y  J  ~) Q# nx=-(50+32.5*(1-cos(t*18/13))).*sin(t)-15*cos(t)
    ! x3 p7 Y( m( x: Y" dy=(50+32.5*(1-cos(t*18/13))).*cos(t)-15*sin(t)
    $ `% R7 p$ s3 d3 K2 [$ |dx1=-(50+32.5*(1-cos(t*18/13))).*cos(t)-(45*sin(t*18/13)-15).*sin(t)$ m% H2 v0 u. S" t  e# V
    dy1=-(50+32.5*(1-cos(t*18/13))).*sin(t)+(45*sin(t*18/13)-15).*cos(t): i( [3 N6 |% f& H8 q& A
    dx11=-(2*45*sin(t*18/13)-15).*cos(t)-(810*cos(t*18/13)/13-50-32.5*(1-cos(t*18/13))).*sin(t)
    9 z- ]2 G2 ], A: @" ndy11=(810*cos(t*18/13)/13-50-32.5*(1-cos(t*18/13))).*cos(t)-(2*45*sin(t*18/13)-15).*sin(t)' r! H) {* Z; A% W8 |/ Q/ P9 ~
    p=abs(((dx1.^2+dy1.^2).^(3/2))/(dx1.*dy11-dy1.*dx11))# E  |$ R' U2 C! M
    hold on+ U* A, [" k3 k# {/ ?- M4 _6 }4 Z
    plot(t,p)# t, m0 w; x: C# ^2 }, c; o

    点评

    除法没用点运算,导致p的维度不对,必须是与t维度相同的向量才能拿来跟t一起绘图。  详情 回复 发表于 2020-7-27 18:35

    该用户从未签到

    6#
    发表于 2020-7-27 18:35 | 只看该作者
    greensmile 发表于 2020-7-27 18:344 `2 t; W$ S" a4 l! G8 f, X
    按照你的回答我运行了一下,结果得出的图像感觉有点奇怪。。不太像是曲率半径的图像。
    9 S& p# t  A# {# u5 P8 k& X然后我又按照解析 ...

    8 C& f! Y# S8 w7 B  {7 Z" b除法没用点运算,导致p的维度不对,必须是与t维度相同的向量才能拿来跟t一起绘图。! J. c9 b* [2 r0 f9 c" |
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 23:15 , Processed in 0.171875 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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