Matlab里的积分变换写成脚本形式

 

设置正弦函数采样时间为0.1,仿真时间30.幅值为10.

 

 

                                   图1

 从上图看出数值误差为零,积分误差为(-0.5,0.5)之间。

设置正弦函数采样时间为0.1,仿真时间30.幅值为100.

                                                 图2

从上图看出,正弦函数值误差为0,正弦函数积分误差为(-5,5).

从图1图2看出函数值越大,函数积分误差值越大。

                                                图3

图3为采样时间0.1,仿真时间30.幅值为100的正弦函数图。

结合图1到图3看出,积分误差的波动趋势和正弦函数走势一致,

因此得到积分误差与函数值比值图

幅值为100采样间隔为0.1的比值图

                                                   图4

幅值为10采样间隔为0.1的比值图

                                                      图5

从图4图5可以看出幅值不同,采样间隔相同,积分误差与函数值的比值相同。这表明在采样间隔不变的情况下不同的函数值并不会影响积分误差值,并且积分误差值为函数值的0.05倍。
设置采样间隔为0.01

                                                              图6

从图5和图6看出间隔变小一个数量级,比值也随着变小一个数量级。当仿真间隔为0.01时比值为0.005.这表明,仿真时间越小,积分误差值越小,当仿真间隔为0.01,积分误差值为函数值的0.005倍。

综上所述,通过脚本与simulink运算结果的对比得出,下面代码在求函数积分时是可以使用的。





t=30;
ts=0.01;
xdf(1)=0;%积分初始值
load('matlab.mat');
for k=1:1:t/ts+1
   if k==1 
    K=k-1;    
    times(k)=K*ts;
    xd(k)=100*sin(K*ts);
   else
        K=k-1;    
    times(k)=K*ts;
    xd(k)=100*sin(K*ts);
    
    xdf(k)=xdf(k-1)+(xd(k-1)+xd(k))*ts/2;
   end
end
figure(1)
plot(xd'-z(:,1));
figure(2)
plot(times,(xdf'-z(:,2))./xd')
figure(3)
plot(xd);
figure(4)
plot((xdf'-z(:,2)))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值