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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
t=0:0.001: (13*pi/18)
  r  o2 d3 o* \9 n, sx=-(50+32.5*(1-cos(t*18*pi/(13*pi)))).*sin(t)-15*cos(t)
- F+ P) x! P; w) b* ty=(50+32.5*(1-cos(t*18*pi/(13*pi)))).*cos(t)-15*sin(t). T- K8 ~. Y) f) p! q' C9 |4 u
dx1=diff(x)
2 S& Y4 {9 H0 Q; @( u4 Mdy1=diff(y)7 e  y3 R4 ?1 u$ k+ X7 S, ?; G
dx11=diff(x,2)
8 Z6 H/ Z4 \1 I" [% Pdy11=diff(y,2)
% S. M9 T8 q8 T! Y; ~2 B! Z
; {* U+ R' G! \$ E2 Z2 op=abs(sqrt((dx1.^2+dy1.^2).^3)/(dx1.*dy11-dy1.*dx11))
/ Y) z  f  y. c7 |3 s4 s4 vhold on
: @  E/ v2 n% s7 z3 p1 c# @  u2 U. O9 ?plot(t,p)
( N3 n7 w+ o  \4 E+ b2 q运算时报错矩阵维度必须一致,然后我尝试改了一下。。
/ _8 L. v! X4 \" B' Kt=0:0.001: (13*pi/18)6 ?' Y, t1 i. L
x=-(50+32.5*(1-cos(t*18*pi/(13*pi)))).*sin(t)-15*cos(t)' R( G3 |4 e  I0 `* m6 c# o+ d
y=(50+32.5*(1-cos(t*18*pi/(13*pi)))).*cos(t)-15*sin(t)3 D+ q- l* s' s4 t7 U
dx1=diff(x)
1 R' q  j- J; A; X6 pdy1=diff(y)
& W. V: V; ]+ _dx11=diff(x,2)
. n* p5 c7 d6 j8 ]dy11=diff(y,2)
" ~# j" C  A- e& }2 \& H5 F4 c; G. u% ?* u" K9 R5 B
3 ?: g1 _4 x1 r  S# I
dx1=dx1(1:length(dx11))
/ f% i: ]( T2 G6 G7 Fdy1=dx1(1:length(dy11))8 a' x1 ]3 }7 h6 o  l4 Y
% v) u1 k0 G$ k( F; G% D; x

* f1 G9 o+ x- d# b6 D) Np=abs(sqrt((dx1.^2+dy1.^2).^3)/(dx1.*dy11-dy1.*dx11)): g' A  j6 C( r2 x  D/ r" C
hold on
! L8 O1 e! {& \. o8 Q& s( Iplot(t,p)
3 y7 Y' O" g7 t+ J3 a3 @. Y这个时候代码无报错,但绘图只有坐标轴没有图像
; Y8 B- m) W+ _- P( w. G% J! U. O# L8 A! ~+ W1 v
希望大神们可以给小弟指一指错误,谢谢大家* U" i- ]" f( V6 d, o/ q8 ~9 n* ?9 d$ n! F
! W1 H7 V# h6 Z) x" }7 `' i

该用户从未签到

6#
发表于 2020-7-27 18:35 | 只看该作者
greensmile 发表于 2020-7-27 18:34
% {# h1 d& O. m& B" s按照你的回答我运行了一下,结果得出的图像感觉有点奇怪。。不太像是曲率半径的图像。
  T2 J( t% f4 Z5 F' y8 U+ j然后我又按照解析 ...
" F: J/ U9 _  e' C, Z  f
除法没用点运算,导致p的维度不对,必须是与t维度相同的向量才能拿来跟t一起绘图。
4 [6 T3 o7 T+ R0 u. R0 e1 b" w+ \

该用户从未签到

5#
 楼主| 发表于 2020-7-27 18:34 | 只看该作者
thinkfunny 发表于 2020-7-27 18:320 e: L' ^- x! y& B: V8 I( t9 R* h; x
不是点运算的问题,是离散向量求差分的时候,长度会比原向量少阶数个元素(一阶差分少一个,二阶少两个), ...

* Q0 h+ I0 h4 M# g7 R) U按照你的回答我运行了一下,结果得出的图像感觉有点奇怪。。不太像是曲率半径的图像。
9 I. C2 ~: k2 a然后我又按照解析式求导,把得出来的公式输入进去,代码可以正常运算了,但是还是只有坐标轴,绘制不出来图像是怎么回事呀。。
4 a, y8 E- K( |1 A这是改正后的代码3 E  A6 Z  o% f( u- u% l9 }% k
t=0:0.001: (13*pi/18)
0 K/ ?* a- w1 Yx=-(50+32.5*(1-cos(t*18/13))).*sin(t)-15*cos(t)3 z1 D3 i( m/ \! M' |7 B% W
y=(50+32.5*(1-cos(t*18/13))).*cos(t)-15*sin(t)6 z& l) z/ g  V2 B/ X+ n
dx1=-(50+32.5*(1-cos(t*18/13))).*cos(t)-(45*sin(t*18/13)-15).*sin(t)2 g/ x+ t& k" L7 d2 G9 X! _6 X
dy1=-(50+32.5*(1-cos(t*18/13))).*sin(t)+(45*sin(t*18/13)-15).*cos(t)$ Q9 v- p' E; U3 J3 B; T
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)
/ V7 F3 @1 }  w) I7 m3 z. ody11=(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)
2 t+ G6 a2 i/ F6 j9 _1 kp=abs(((dx1.^2+dy1.^2).^(3/2))/(dx1.*dy11-dy1.*dx11))
  [# ~- F( v1 Y8 K: \, P: Nhold on
1 `' _$ z3 n  I: h: x" L# ^plot(t,p)! A8 d+ `& l) V$ o( T, Z

点评

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

该用户从未签到

4#
发表于 2020-7-27 18:32 | 只看该作者
不是点运算的问题,是离散向量求差分的时候,长度会比原向量少阶数个元素(一阶差分少一个,二阶少两个),你先设置的t向量不可能和后面用差分求出来的p有相同维度的。既然原始的x和y都是t的简单函数,那就直接用解析式求精确微分(而不是用离散向量求差分)。
& B* q: F2 X& S0 F改成
) `  t, X$ u3 F5 n' H! Dsyms t9 d: B. I* o( y; U' t
x = -(50+32.5*(1-cos(t*18*pi/(13*pi)))).*sin(t)-15*cos(t);
' J% J( e# V; ]y = (50+32.5*(1-cos(t*18*pi/(13*pi)))).*cos(t)-15*sin(t);
0 m9 N+ t8 X0 e5 n+ F2 Tdx1 = diff( x );' v# n8 i( ^( p; y) L/ y1 }
dy1 = diff( y );
# O1 N, [2 Q1 \/ s* B9 f( r4 }- [$ Ndx11 = diff( x, 2 );
, |! h  [% c) ^4 V1 ]' z9 sdy11 = diff( y, 2 );
: a- L2 a+ d* K8 ~+ j0 D0 Dp = abs(sqrt((dx1.^2+dy1.^2).^3)./(dx1.*dy11-dy1.*dx11));
8 x6 `/ s/ E6 J1 PPFunction = matlabFunction( p );. P# W! `4 ~, O" Y! O) i
t = 0 : 0.001 : (13*pi/18);
/ C& m# D7 E9 F5 u9 u" y4 S  S( fp = PFunction( t );
% j& m( v2 ]" N9 ~  Bplot( t, p )

点评

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

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

    [LV.1]初来乍到

    3#
    发表于 2020-7-27 18:31 | 只看该作者
    4 |# c- z6 i8 x
    按照你的代码p是定值,你少写了一个点,正确代码如下9 T$ r; y( M8 c# X4 L2 f" U( ]) C( S
    p=abs(sqrt((dx1.^2+dy1.^2).^3)./(dx1.*dy11-dy1.*dx11))
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-24 16:49 , Processed in 0.203125 second(s), 25 queries , Gzip On.

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

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

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