找回密码
 注册
Simdroid-非首页
查看: 253|回复: 5

matlab对离散数据求导

[复制链接]
发表于 2010-12-17 19:42:22 | 显示全部楼层 |阅读模式 来自 黑龙江哈尔滨
试验数据,一组时间,一组位移,可以直接绘时间-位移曲线,如果想绘时间速度曲线下面的程序问题在哪儿呢?
time=a(:,1);
disp=a(:,2);
rate=diff(disp,time,1);
plot(rate);
发表于 2010-12-18 19:40:24 | 显示全部楼层 来自 河北廊坊
Simdroid开发平台
请lz仔细看看帮助文件,不要按照自己的想法去写程序,应该遵守matlab的语法规则
回复 不支持

使用道具 举报

发表于 2010-12-19 09:22:57 | 显示全部楼层 来自 山东烟台
本帖最后由 liuyalong008 于 2010-12-19 09:39 编辑

以下是我自己写的关于离散序列求导的函数
x不一定是等间距的,k是求导次数
  1. function [f,x_out]=cal_diff(x,y,k)
  2. len=length(x);
  3. dy=diff(y,k);
  4. for i=1:k
  5. tempx=zeros(len-k,1);
  6. dis=tempx;
  7. for j=1:(len-i)
  8. tempx(j)=(x(j)+x(j+1))/2;
  9. dis(j)=x(j+1)-x(j);
  10. end
  11. x=tempx;
  12. end
  13. L=size(dy);
  14. if L(1)==1
  15. dy=dy';
  16. end
  17. f=dy./dis;
  18. x_out=x;
复制代码

  1. x=0:0.1:2*pi;
  2. y=sin(x);
  3. [a,b]= cal_diff(x,y,1);
  4. [c,d]= cal_diff(x,y,2);
  5. plot(x,y,b,a,d,c)
  6. legend('origin','1st derivative','2nd derivative')
复制代码

本帖子中包含更多资源

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

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-12-19 10:24:31 | 显示全部楼层 来自 浙江杭州
也可以先写成样条函数spline(t, u),再用样条函数求导的命令求导,这样做应该比直接用中心差分/差分求导效果好。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-19 18:26:49 | 显示全部楼层 来自 黑龙江哈尔滨
谢谢两位的详细指导,两种方法都试一下。谢谢!
回复 不支持

使用道具 举报

发表于 2010-12-26 21:57:01 | 显示全部楼层 来自 天津
同意gfl 的方法,对于离散数据先进行曲面拟合,在对拟合曲面求导作为原离散数据点的导数,这是通用的方法,也是许多专家推荐的方法.
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-28 23:37 , Processed in 0.056779 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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