matlab如何 对数组求导

matlab如何 对数组求导,第1张

本来不想说的。

你的前几个数据的y是相同的,也就是说是它们的数值导数肯定为零。但不意味着这些点都是极值点,这些绝对是你的数据精度的问题。

解析式比数值的优势,我觉得就是“精度”,解析式能求出任何一点的值,而数值只是有限的几个点是己知的,根据这些去猜测(也就是插值)出其它点的值(这些值跟真值应当有一些出入)

data=[

104 0

112 0

12 0

128 0

136 0

144 0

152 0

16 0

168 0

176 0

184 0

192 0

2 5

208 69

216 408

224 1148

232 1963

24 2074

248 1436

256 689

264 287

272 80

28 27

288 4

296 2

304 0

312 7

32 14

328 61

336 158

344 330

352 724

36 1367

368 2332

376 3411

384 4054

];

x=data(:,1)';

y=data(:,2)';

plot(x,y)

dydx=diff(y)/diff(x); %这个是数值导数

x(find(dydx==0)) %直接数值导数为0的x的值,但是你无法得到中间那个峰的值。

x(dydx(1:end-1)dydx(2:end)<0) %导数值跨过0的值,这个应当是你想要的

diff(f,x,2)

>> syms x

>> y=x^3+2x^2;

>> diff(y,x,2)

ans =

6 x + 4

>>

问题分析

1、从数据看,与椭圆的形状吻合不是很好,尤其是短轴部分明显凹入。

2、拟合的基本思路是,使用长半轴a、短半轴b和倾角Q作为参数描述椭圆方程(进一步还可以考虑圆心不在原点,再增加两个参数),然后通过优化,目标是使得所有已知点到椭圆的总距离最短。

3、关于点到椭圆的最短距离,有很多讨论,都非常复杂,并不实用。这里采用在椭圆上取足够多的点然后直接计算的距离的方式。

4、拟合得到椭圆参数后,面积S=πab直接计算,主轴和X轴的夹角为拟合得到的数据,而关于椭圆的X最大值对应的X,Y坐标的计算,可以把点取密集一些,直接求最大值,也可以对X求导数,然后解X'=0得到对应的t,再计算X、Y。

 

参考代码

12345678910111213141516171819202122232425262728293031323334353637383940function zdX=[048, 158,2428,3032,336,3368,292,2172,1368,0512,-0436,0876,-048,-158,-2428,-3032,-336,-3368,-292,-2172,-1368,-0512,0436,048];Y=[0752,18572,239,224,1766,08828,00572,-03136,-0472,-06064,-07864,-02804,-0752,-18572,-239,-224,-1766,-08828,-00572,03136,0472,06064,07864,0752];clfplot(X,Y,'x')hold onc = lsqcurvefit(@curve,[35 15 30pi/180 0 0],[X;Y],X0)a = c(1);b = c(2);Q = c(3);T=linspace(0,2pi,100);x1=acos(T);y1=bsin(T);x=x1cos(Q)-y1sin(Q);y=x1sin(Q)+y1cos(Q);plot(x,y,'r--')% 椭圆的面积S = piab% 椭圆的X最大值对应的X,Y坐标t=fzero(@(t)-acos(Q)sin(t)-bsin(Q)cos(t),0);x=acos(t)cos(Q)-bsin(t)sin(Q)y=acos(t)sin(Q)+bsin(t)cos(Q)plot(x,y,'mo')legend('原始数据','拟合曲线','X最大值',4)% 椭圆的主轴和X轴的夹角Q = Q  180/pi function f = curve(c,xy)a = c(1);b = c(2);Q = c(3);t=linspace(0,2pi,500);x1=acos(t);y1=bsin(t);x=x1cos(Q)-y1sin(Q) + c(4);y=x1sin(Q)+y1cos(Q) + c(5);f = xy(1,:)0;for i=1:length(xy)    f(i) = <a

href=">

以上就是关于matlab如何 对数组求导全部的内容,包括:matlab如何 对数组求导、matlab怎么精确的求离散点的二阶导数、matlab拟合离散点曲线等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10205635.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存