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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
t=0:0.001: (13*pi/18)+ D9 V* G. f4 R# R) `) U
x=-(50+32.5*(1-cos(t*18*pi/(13*pi)))).*sin(t)-15*cos(t)
2 d3 [( M7 J8 X/ Z; T; f: N  wy=(50+32.5*(1-cos(t*18*pi/(13*pi)))).*cos(t)-15*sin(t)
" H5 _& b( |- X' [4 ^- tdx1=diff(x)' }( `7 l2 b5 ^9 B
dy1=diff(y)) Y# G1 e  s0 c/ d9 N/ z
dx11=diff(x,2)
! x5 c5 \' L' P2 n+ cdy11=diff(y,2)
1 e4 X  \/ D' a% @2 C* X+ [+ o
$ r4 }5 B1 M+ F9 z! i7 Z& Pp=abs(sqrt((dx1.^2+dy1.^2).^3)/(dx1.*dy11-dy1.*dx11))
/ L( ]. T$ x+ jhold on' h) q) q8 y( K6 Z
plot(t,p), |  |, @4 X; E2 ?- _8 M  I5 K0 i
运算时报错矩阵维度必须一致,然后我尝试改了一下。。
  r) i' \8 b0 J; M: ~; At=0:0.001: (13*pi/18)
0 [* s# B# R1 gx=-(50+32.5*(1-cos(t*18*pi/(13*pi)))).*sin(t)-15*cos(t). U& p# x  l' }
y=(50+32.5*(1-cos(t*18*pi/(13*pi)))).*cos(t)-15*sin(t)2 u1 s& o: U: c: r7 V- E
dx1=diff(x)
0 m5 [* l' H+ u0 l& e4 Vdy1=diff(y)4 t& o$ S- z4 \+ B* V2 A
dx11=diff(x,2)0 p" z/ o4 s/ m, U% b5 {- j
dy11=diff(y,2)% e* o/ a1 K1 W' g8 W' a" G

5 k, d( e$ S4 q% P0 V: a" R. E) v( N9 K' o* p2 O
dx1=dx1(1:length(dx11))" q% Y; c! A. C) m
dy1=dx1(1:length(dy11))
4 C/ ~  M4 A2 @4 V4 W
9 T$ g3 g$ I+ a. J
* }* ^9 N2 d0 E$ ~3 gp=abs(sqrt((dx1.^2+dy1.^2).^3)/(dx1.*dy11-dy1.*dx11))' o, m' {, b# T) d: T- K
hold on: f, h& M7 K" g6 ?4 m2 Z
plot(t,p); S2 m) B" e3 a" Z: V- X+ p- X
这个时候代码无报错,但绘图只有坐标轴没有图像4 a, R# p" V& P, e) u: Z$ J
* t; y* t8 z1 p! @! n  J- k
希望大神们可以给小弟指一指错误,谢谢大家* a3 ~' x- F2 l1 Q) Z
9 G  S9 T- {* f$ H+ H
  • TA的每日心情

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

    [LV.1]初来乍到

    3#
    发表于 2020-7-27 18:31 | 只看该作者

    ( q) |/ ]* ~* T9 z+ M  A按照你的代码p是定值,你少写了一个点,正确代码如下) O+ s# v$ ?* V, d% U! {
    p=abs(sqrt((dx1.^2+dy1.^2).^3)./(dx1.*dy11-dy1.*dx11))

    该用户从未签到

    4#
    发表于 2020-7-27 18:32 | 只看该作者
    不是点运算的问题,是离散向量求差分的时候,长度会比原向量少阶数个元素(一阶差分少一个,二阶少两个),你先设置的t向量不可能和后面用差分求出来的p有相同维度的。既然原始的x和y都是t的简单函数,那就直接用解析式求精确微分(而不是用离散向量求差分)。( C) f: r9 k: X7 P/ \$ U
    改成
    ) M- a, ]  G& ]3 t: A/ _syms t0 E: A9 X5 O; Q3 `
    x = -(50+32.5*(1-cos(t*18*pi/(13*pi)))).*sin(t)-15*cos(t);
    ! s/ u) ]& {3 y! `$ @* sy = (50+32.5*(1-cos(t*18*pi/(13*pi)))).*cos(t)-15*sin(t);( Y& x+ u8 @* o3 j" {- T
    dx1 = diff( x );
    3 ?* E# f' ]- u, o& Rdy1 = diff( y );
    4 U5 O6 j3 H3 H1 q1 B% W  adx11 = diff( x, 2 );
    5 v6 y( ?6 _) {2 I0 l+ M6 s" Jdy11 = diff( y, 2 );( D  i! r* _3 U4 B. |
    p = abs(sqrt((dx1.^2+dy1.^2).^3)./(dx1.*dy11-dy1.*dx11));, Z- p6 N9 R- L- v  r  Z
    PFunction = matlabFunction( p );
    % F8 e+ h7 C- r: }: Nt = 0 : 0.001 : (13*pi/18);% ?4 _2 |3 `1 K3 C
    p = PFunction( t );
    * G! N8 |# Q4 Z3 T" gplot( t, p )

    点评

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

    该用户从未签到

    5#
     楼主| 发表于 2020-7-27 18:34 | 只看该作者
    thinkfunny 发表于 2020-7-27 18:32
    . d/ O4 X" Q- |# a, [7 M4 X1 K6 c6 ]不是点运算的问题,是离散向量求差分的时候,长度会比原向量少阶数个元素(一阶差分少一个,二阶少两个), ...

    * `1 q  F1 A, y* A3 V% i按照你的回答我运行了一下,结果得出的图像感觉有点奇怪。。不太像是曲率半径的图像。0 U/ |. q( u. a8 E
    然后我又按照解析式求导,把得出来的公式输入进去,代码可以正常运算了,但是还是只有坐标轴,绘制不出来图像是怎么回事呀。。
    % V+ Q9 y* m. C. ~: ^. {这是改正后的代码- v' d* ]' {% t7 q. ]2 l
    t=0:0.001: (13*pi/18)# g4 V/ I5 V/ ?9 |" m8 z& F7 `2 K0 z
    x=-(50+32.5*(1-cos(t*18/13))).*sin(t)-15*cos(t)
    / j9 u9 s' |' [1 `9 p1 R5 Hy=(50+32.5*(1-cos(t*18/13))).*cos(t)-15*sin(t)5 X" C1 z# b5 J# e' b
    dx1=-(50+32.5*(1-cos(t*18/13))).*cos(t)-(45*sin(t*18/13)-15).*sin(t)
    $ {9 C  Z3 H, h7 k3 D" A! ndy1=-(50+32.5*(1-cos(t*18/13))).*sin(t)+(45*sin(t*18/13)-15).*cos(t)4 v0 P2 z5 Q+ D  m" r
    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 z  w; X% \- b* q* c) i$ V* q% 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)/ h! U' M0 x; g, P: p7 L7 r/ ^
    p=abs(((dx1.^2+dy1.^2).^(3/2))/(dx1.*dy11-dy1.*dx11))
    3 @; s3 j& m: `hold on
    + @0 T+ c) e. }: D/ [7 `8 }+ cplot(t,p)1 [$ w' I, ~+ O( M

    点评

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

    该用户从未签到

    6#
    发表于 2020-7-27 18:35 | 只看该作者
    greensmile 发表于 2020-7-27 18:34
    " p7 a/ I% ^0 F" S1 h按照你的回答我运行了一下,结果得出的图像感觉有点奇怪。。不太像是曲率半径的图像。1 _: e8 o8 x' y( n1 A# O0 x$ x
    然后我又按照解析 ...

    3 i- \8 G8 T1 k. \; s- f1 [# t9 [除法没用点运算,导致p的维度不对,必须是与t维度相同的向量才能拿来跟t一起绘图。) |/ f; f/ f) m. `, v- X
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-27 02:31 , Processed in 0.125000 second(s), 24 queries , Gzip On.

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

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

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