matlab 实现信号的微分和积分

这篇具有很好参考价值的文章主要介绍了matlab 实现信号的微分和积分。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.使用中值法对信号进行微分处理

matlab 实现信号的微分和积分

1.1 正弦信号的微分处理

%生成正弦波信号
Fs=500;%采样频率是500Hz
T=1;%时间是1秒
dt=1.0/Fs;%step等于 1/500
N=T/dt;%数组的个数为N
t=linspace(0, T, N);%生成一个数组[0, 0.002, 0.004, 0.006,...,0.998, 1.000]
y=10*sin(2*pi* 5 *t);%生成频率为5Hz,幅值为10,时间为1秒的正弦波
subplot(2, 1, 1);
plot(t, y);

%给正弦波形信号做微分处理得到的是余弦波形
y1=y;
y1(1)=y(1);
for k=2:1:N-1
    y1(k)=(y(k+1) - y(k-1))/(2*dt);
end
y1(N)=y(N);
subplot(2, 1, 2);
plot(t, y1);

上图是正弦信号波形,下图是对其进行微分的波形
matlab 实现信号的微分和积分

1.2 方波信号的微分处理

t=0:0.001:50;
f=square(t);
subplot(2, 1, 1);
plot(t, f);%画出以数组t为横坐标,数组f为纵坐标组成的点,并用线将这些点连起来
axis([-1,51, -2, 3]);%设置X坐标的显示范围为[-1,11],Y坐标的显示范围为[-1,3],注意只有写在plot函数之后才会生效

%给方波形信号做微分处理
y=f;
dt=0.001;
y(1)=f(1);
for k=2:1:(50.0/0.001)
    y(k)=(f(k+1) - f(k-1))/(2*dt);
end
y(50.0/0.001)=f(50.0/0.001);
subplot(2, 1, 2);
plot(t, y);

matlab 实现信号的微分和积分

1.3 锯齿波信号的微分处理

t=0:0.001:10;
f=sawtooth(2*pi* 1 *t + (pi/2));
subplot(2,1,1);
plot(t,f,'r','LineWidth',3);
grid on;
axis([-0.5,10.5, -1.5,1.5]);

%给锯齿波形信号做微分处理
y=f;
dt=0.001;
y(1)=f(1);
for k=2:1:(10.0/0.001)
    y(k)=(f(k+1) - f(k-1))/(2*dt);
end
y(10.0/0.001)=f(10.0/0.001);
subplot(2, 1, 2);
plot(t, y);

matlab 实现信号的微分和积分

1.4 三角波信号的微分处理

t=0:0.001:10;
f=sawtooth(2*pi* 1 *t + (pi/2), 1/2);
subplot(2, 1, 1);
plot(t,f,'r','LineWidth',3);
grid on;
axis([-0.5,10.5, -1.5,1.5]);

%给三角波形信号做微分处理
y=f;
dt=0.001;
y(1)=f(1);
for k=2:1:(10.0/0.001)
    y(k)=(f(k+1) - f(k-1))/(2*dt);
end
y(10.0/0.001)=f(10.0/0.001);
subplot(2, 1, 2);
plot(t, y);

matlab 实现信号的微分和积分

2.使用梯形法给信号做数字积分

matlab 实现信号的微分和积分

2.1 三角波信号的积分处理

t=0:0.001:10;
f=sawtooth(2*pi* 1 *t + (pi/2), 1/2);
subplot(2, 1, 1);
plot(t,f,'r','LineWidth',3);
grid on;
axis([-0.5,10.5, -1.5,1.5]);

%给三角波形信号做积分处理
y=f;
dt=0.001;
y(1)=0;
for k=2:1:(10.0/0.001)
    y(k)=y(k-1) + (dt*(f(k)+f(k-1)))/2;
end
subplot(2, 1, 2);
plot(t, y);

matlab 实现信号的微分和积分

2.2 方波形信号的积分处理

t=0:0.001:50;
f=square(t);
subplot(2, 1, 1);
plot(t, f);%画出以数组t为横坐标,数组f为纵坐标组成的点,并用线将这些点连起来
axis([-1,51, -2, 3]);%设置X坐标的显示范围为[-1,11],Y坐标的显示范围为[-1,3],注意只有写在plot函数之后才会生效

%给方波形信号做积分处理
y=f;
dt=0.001;
y(1)=0;
for k=2:1:(50.0/0.001)
    y(k)=y(k-1) + (dt*(f(k)+f(k-1)))/2;
end
subplot(2, 1, 2);
plot(t, y);

matlab 实现信号的微分和积分

3. 给三角波信号先做微分处理,再做积分处理

t=0:0.001:10;
f=sawtooth(2*pi* 1 *t + (pi/2), 1/2);
subplot(3, 1, 1);
plot(t,f,'r');
grid on;

%给三角波形信号做微分处理得到方波信号
y=f;
dt=0.001;
y(1)=f(1);
for k=2:1:(10.0/0.001)
    y(k)=(f(k+1) - f(k-1))/(2*dt);
end
y(10.0/0.001)=f(10.0/0.001);
subplot(3, 1, 2);
plot(t, y);

%再给上面的方波做积分处理
y1=y;
dt=0.001;
y1(1)=0;
for k=2:1:(10.0/0.001)
    y1(k)=y1(k-1) + (dt*(y(k)+y(k-1)))/2;
end
subplot(3, 1, 3);
plot(t, y1);
axis([0,10, -1,1]);
grid on;

matlab 实现信号的微分和积分
现在我们利用定时器,让三角波信号动起来,动态观察三角波信号的微分和积分。

matlab 实现信号的微分和积分

关键代码如下:文章来源地址https://www.toymoban.com/news/detail-449219.html

global chushixiangwei
chushixiangwei=0;
global mytimer
mytimer=timer('Period',1,'ExecutionMode','fixedDelay');
mytimer.TimerFcn={@my_callback_fcn};

function my_callback_fcn(hObject, eventdata, handles)
    %生成三角波信号
    t=0:0.001:10;
    global chushixiangwei
    f=sawtooth(2*pi* 1 *t + (pi/2) + chushixiangwei, 1/2);
    chushixiangwei=chushixiangwei+0.5;
    subplot(3, 1, 1);
    plot(t,f,'r','LineWidth',3);
    grid on;
    
    
    %给三角波形信号做微分处理
    y=f;
    dt=0.001;
    y(1)=f(1);
    for k=2:1:(10.0/0.001)
        y(k)=(f(k+1) - f(k-1))/(2*dt);
    end
    y(10.0/0.001)=f(10.0/0.001);
    subplot(3, 1, 2);
    plot(t, y);

    %再做积分处理
    y1=y;
    dt=0.001;
    y1(1)=0;
    for k=2:1:(10.0/0.001)
        y1(k)=y1(k-1) + (dt*(y(k)+y(k-1)))/2;
    end
    subplot(3, 1, 3);
    plot(t, y1);
    axis([0,10, -1,1]);
    grid on;

function pushbutton1_Callback(hObject, eventdata, handles)
    %先要找到所有的定时器,让它们先停下来
    ts=timerfind; 
    if length(ts)>0 
       stop(ts); 
    end 
    %然后开启定时器
    global mytimer;
    start(mytimer);


function pushbutton2_Callback(hObject, eventdata, handles)
    ts=timerfind; 
    if length(ts)>0 
       stop(ts); 
       delete(ts); 
     end 

到了这里,关于matlab 实现信号的微分和积分的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通信入门系列——微积分中极限、连续、导数、微分、积分

    本节目录 本节内容 一、极限 1、数列极限 数列极限:设{xn}为一个实数列,A为一个定数。若对任意给定的ε0,总存在正整数N,使得当nN时,有|xn-A|ε,则称数列{xn}收敛于A,定数A称为数列{xn}的极限,记作: 也就是说,当n趋近于无穷大时,数列{xn}的极限等于或趋于A。若数列{xn}没

    2024年01月21日
    浏览(54)
  • 中值滤波原理及matlab实现代码

      均值滤波虽然可以降低噪声,但是也会导致图像模糊。而中值滤波在一定条件下可以克服线性滤波带来的图像细节模糊的问题,它对处理椒盐噪声非常有效。   中值滤波通常采用一个含有奇数个点的滑动窗口,将窗口中各点的灰度值按照从小到大的顺序排列,用这个排

    2024年02月06日
    浏览(35)
  • 【scipy 基础】--积分和微分方程

    对于手工计算来说,积分计算是非常困难的,对于一些简单的函数,我们可以直接通过已知的积分公式来求解,但在更多的情况下,原函数并没有简单的表达式,因此确定积分的反函数变得非常困难。 另外,相对于微分运算来说,积分运算则具有更多的多样性,包括不同的积

    2024年02月05日
    浏览(39)
  • Matlab实现图像添加椒盐噪声及中值滤波/均值滤波去除

    椒盐噪声(peppersalt noise)由胡椒噪声(pepper noise)和盐噪声(salt noise)组成。一般因图像传感器,传输信道等处产生,由黑白相间的亮暗点噪声组成。 黑点可以看出胡椒,白点可以看成盐。 下面为使用matlab自带的函数对图像添加椒盐噪声的代码和添加后的结果。 均值滤波

    2024年02月11日
    浏览(43)
  • 使用matlab实现图像信号的色彩空间转换

    下面的这个代码是在使用了rgb2hsi()方法失败后,进行修改的。 rgb2hsi(img)这个方法可以将RGB图像转换为HIS图像;但是爆出了 Untitled5(line 5)hsi = rgb2hsi(img)这个错误。 查了下可能是因Matlab版本不支持rgb2hsi函数。Matlab版本较旧,所以就手动实现RGB到HSI的转换。 通过分离RGB通道,将图

    2024年02月04日
    浏览(46)
  • 全国大学生数学竞赛备考——高数上(极限、导数、微分、积分、级数)

    全国大学生数学竞赛 竞赛进程分为两个阶段,第一阶段为全国大学生数学竞赛初赛(也称为预赛、赛区赛) 第二阶段为全国大学生数学竞赛决赛 非数学类:竞赛内容为大学本科理工科专业高等数学 ( 只有高等数学一门课程 )课程的教学内容,高等数学教材中出现的,包括选修的

    2023年04月08日
    浏览(51)
  • Python科学计算进阶:数值积分与微分求解算法应用在Python

    在Python中进行科学计算时,数值积分和微分是非常常见的操作。下面我将介绍几种常用的数值积分和微分求解算法,并给出Python代码示例。 一、数值积分 矩形法 矩形法是一种简单的数值积分方法,它使用矩形近似代替被积函数。这种方法虽然简单,但对于某些简单函数可以

    2024年02月02日
    浏览(49)
  • matlab使用教程(29)—微分方程实例

            此示例说明如何使用 MATLAB® 构造几种不同类型的微分方程并求解。MATLAB 提供了多种数值算法来求解各种微分方程:         vanderpoldemo 是用于定义 van der Pol 方程的函数 function dydt = vanderpoldemo(t,y,Mu) %VANDERPOLDEMO Defines the van der Pol equation for ODEDEMO. % Copyright 1984-2

    2024年02月10日
    浏览(44)
  • 【matlab】数值积分公式的程序实现

    ( 一 )专题实验(Newton-Cotes积分公式) 1、编写[a,b]上梯形积分公式、Simpson积分公式。 2、利用自己编写的程序计算定积分,计算一下数值解和精确解之间差的绝对值。 梯形积分: function  T=TX_int(f,a,b) T=(b-a)/2*(f(a)+f(b)); TX_int(@(x)cos(x),0,pi/4) ans = 0.6704 function  T=TX_int(f,a,b) T=(b-

    2024年02月05日
    浏览(40)
  • matlab使用教程(27)—微分代数方程(DAE)求解

            微分代数方程是一类微分方程,其中一个或多个因变量导数未出现在方程中。方程中出现的未包含其导数的变量称为代数变量,代数变量的存在意味着您不能将这些方程记为显式形式 y ′ = f t , y 。相反,您可以解算下列形式的 DAE:         • ode15s 和 ode23t

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包