注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

MATLAB中的diff函数  

2011-07-22 14:26:35|  分类: M&M |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
显然这个函数是单词differential(微分)的简写,用于计算微分。实际上准确来说计算的是差商。
如果输入一个长度为n的一维向量,则该函数将会返回长度为n-1的向量,向量的值是原向量相邻元素的差,于是可以计算一阶导数的有限差分近似。
例如:
>> x=1:10
x =
     1     2     3     4     5     6     7     8     9    10
>> diff(x)
ans =
     1     1     1     1     1     1     1     1     1
如果是m*n的矩阵,则按行实施,结果就是(m-1)*n的矩阵,就是用下一行减去上一行。
例如:
>> a=magic(4)
a =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1
>> diff(a)
ans =
   -11     9     7    -5
     4    -4    -4     4
    -5     7     9   -11
利用diff计算微分,例如:
f=@(x) 1+2*x-3*x.^2+4*x.^3-5*x.^4+6*x.^5;
x=0:0.1:1;
y=f(x);
d=diff(y)/0.1;
n=length(x);
plot(x(1:n-1),d,'o');
 hold on;
%绘制真实导数图形
x=0:0.05:1;
plot(x, 2-6*x+12*x.^2-20*x.^3+30*x.^4,'r');
得到图形如下:
MATLAB中的diff函数 - Castor - 趁年轻,多折腾~~
 有一些偏差。这个时候可以使用缩小间距提高精度。
另外diff函数还有一些其他的妙用,例如:
检测向量是否等距:
等距的测试是if any(diff(diff(x)~=0),只有等距的时候结果才为零。
检测向量是否按升序或者降序排列也可以,如if any(diff(x)<=0)
本质上是采用了导数的性质。
  评论这张
 
阅读(29180)| 评论(4)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016