MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   请教程序为什么单步可运行,而整体出错?谢谢 (https://www.labfans.com/bbs/showthread.php?t=6627)

shirleyflh 2009-03-03 20:39

请教程序为什么单步可运行,而整体出错?谢谢
 
这是求曲率最大点的程序,我单步运行可通过,结果正确,但整体一起运行就出错,错误是
?? Error using ==> ./
Matrix dimensions must agree.

Error in ==> D:\lianghua\matlabwork\cequlv.m
On line 9 ==> k1b=k2./(((1+k1.^2)).^(3/2))

请教 是为什么?怎么解决?

程序如下:
syms x y21
y21='5*x^2+5'
k2=diff(y21,2)
k1=diff(y21,1)

k1b=k2./(((1+k1.^2)).^(3/2))
k1b=abs(k1b)

x=-11:20

k1=subs(k1b)
k1=double(k1)
nk1=length(k1)
maxk1=max(k1)
[mk1,nk1]=find(k1==maxk1)

plot(x,y,x(nk1),y(nk1),'r.')

mathjiang 2009-03-03 21:52

回复: 请教程序为什么单步可运行,而整体出错?谢谢
 
楼主,你定义的函数y在哪儿呢?
plot(x,y....)中的y没有定义。

mathjiang 2009-03-03 22:04

回复: 请教程序为什么单步可运行,而整体出错?谢谢
 
可以了哈:
syms x y21
y21='5*x^2+5';
k2=diff(y21,2);
k1=diff(y21,1);
k1b=k2./(((1+k1.^2)).^(3/2));
k1b=abs(k1b);
x=-11:20;
k1=subs(k1b,'x',-11:20);
k1=double(k1);
nk1=length(k1);
maxk1=max(k1);
[mk1,nk1]=find(k1==maxk1);
plot(x,k1,x(nk1),k1(nk1),'r.')

shirleyflh 2009-03-04 19:32

回复: 请教程序为什么单步可运行,而整体出错?谢谢
 
谢谢版主,但你的程序我在自己的机器上运行还是有错误,错误是:
?? Error using ==> ./
Matrix dimensions must agree.
On line 5 ==> k1b=k2./(((1+k1.^2)).^(3/2));

同样的还是单步可以得到结果,但运行run就出现上述错误.

原来的程序,我补充一下y
syms x y21
y21='5*x^2+5'
k2=diff(y21,2)
k1=diff(y21,1)

k1b=k2./(((1+k1.^2)).^(3/2))
k1b=abs(k1b)

x=-11:20
k1=subs(k1b)
k1=double(k1)
nk1=length(k1)

maxk1=max(k1)
[mk1,nk1]=find(k1==maxk1)

y=[5.*x.^2]
plot(x,y,x(nk1),y(nk1),'r.')


所有时间均为北京时间。现在的时间是 06:35

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.