我是靠谱客的博主 无语小土豆,最近开发中收集的这篇文章主要介绍信号与系统——matlab实现(2)常用信号生成及信号变换内容概述程序实例扩展练习,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

内容概述

本篇主要是基本信号的产生和信号变换操作。基本信号包括:阶跃信号、矩形波信号、正弦信号、指数信号、采样信号等。信号变换操作包括:平移、缩放、反折等。内容较为基础。

程序实例

  1. 阶跃信号
    t>0时,u(t)=1;t<0时,u(t)=0。
    程序如下:
    先定义了函数u:
function y=u(t)
y=(t>0);  %这种表示方法很巧妙
end

主程序:

%阶跃信号

clc,clear;
t=-2:0.001:6;
x=u(t);
plot(t,x);
axis([-2,6,0,1.2]) %设置波形图上横坐标、纵坐标的显示范围
title('单位阶跃函数')

运行结果:
在这里插入图片描述
2. 指数信号
函数形式为f(t)=Keat
程序如下:

%指数信号的产生

clc,clear
K=2;a=-1;
t=0:0.001:5;
x=K*exp(a*t);
plot(x);
title('指数信号')

结果如下:
在这里插入图片描述
3. 正弦信号
函数形式为:f(t)=Ksin(wt+Θ)
程序如下:

%正弦信号

clc,clear;
K=2;
f0=4;
w0=2*pi*f0;
t=0:0.001:1;
x=2*sin(w0*t+pi/6);
plot(x);
title('正弦信号');

结果如下:
在这里插入图片描述

  1. 门信号(矩形信号)
    函数形式为:|t|<τ/2,g(t)=1;其他,g(t)=0.
    程序如下:
%矩形脉冲信号

clc,clear;
t=-2:0.02:6;
x=rectpuls(t-2,4);
plot(t,x);  %plot(x)无法正确输出图形
axis([-5,8,0,1.2]);
title('矩形脉冲');

结果如下:
在这里插入图片描述
5. 方波
程序如下:

%周期方波信号
%产生一个幅度为1、基频为2Hz,占空比为50%的周期方波

clc,clear;
f0=2;
t=0:0.0001:2.5;
w0=2*pi*f0;
y=square(w0*t,50);
plot(t,y);
title('周期方波');
axis([0,5,-2,3]);

结果如下:
在这里插入图片描述
6. 抽样信号(Sa函数)
函数形式为:Sa(t)=sint/t
程序如下:

%连续抽样信号(Sa函数)

clc,clear;
a=-10:1/500:10;
x=sinc(a/pi); %matlab中sinc函数的定义是 (sin(pi*t))/(pi*t)
plot(a,x);
title('抽样信号');
grid on;

结果如下:
在这里插入图片描述
7. 矩形信号的变换操作
程序如下:

%信号变换操作
%已知脉冲宽度为4的矩形信号f(t),-1<t<3时,f(t)=1;其他情况,f(t)=0。要求分别
%画出f(t-t0)(t0=2),反折信号f(-t),尺度变换信号f(at)(a=1/2)

t=linspace(-4,7,10000);
y=u(t+1)-u(t-3); %调用函数u,用两个阶跃信号相减得到脉宽为4的矩形信号。

subplot(4,1,1);  %画出原始函数图形
plot(t,y);
axis([-5,8,-1,2]);
xlabel('t'),ylabel('y');
grid on;

subplot(4,1,2); %画出f(t-t0)
plot(t+2,y);
axis([-5,8,-1,2]);
xlabel('t'),ylabel('f(t-t0)');
grid on;

subplot(4,1,3); %画出f(-t)
plot(-t,y);
axis([-5,8,-1,2]);
xlabel('t'),ylabel('f(-t)');
grid on;

subplot(4,1,4); %画出f(at)
plot(2*t,y);
axis([-5,8,-1,2]);
xlabel('t'),ylabel('f(at)');
grid on;

结果如下:
在这里插入图片描述
8. 正弦函数的变换操作
程序如下:

%信号相加
%f0=2,f1=sinwt,f2=sin3wt,f3=sin5wt,w=2pi,t[-3,3],画出各函数图,并求y=f0+f1+f2+f3
clc,clear;
t=linspace(-3,3,10000);
w=2*pi;
f0=2*ones(1,length(t));
f1=sin(w*t);
f2=sin(3*w*t);
f3=sin(5*w*t);
y=f0+f1+f2+f3;

subplot(5,1,1),plot(t,f0),axis([-3,3,-5,5]);grid on; ylabel('f0');
subplot(5,1,2),plot(t,f1),axis([-3,3,-5,5]);grid on; ylabel('f1');
subplot(5,1,3),plot(t,f2),axis([-3,3,-5,5]);grid on; ylabel('f2');
subplot(5,1,4),plot(t,f3),axis([-3,3,-5,5]);grid on; ylabel('f3');
subplot(5,1,5),plot(t,y,'r'),axis([-3,3,-5,5]);grid on; ylabel('y');

结果如下:
在这里插入图片描述

扩展练习

函数形式如下图:
在这里插入图片描述
问题:1.按照图形生成函数。2.对该函数按要求进行变换操作。
基本思路:先产生一个三角波,然后对三角波平移,再将平移后三角波和原三角波相加,即可得到所示波形。matlab中,先定义一个函数d,用来生成单个三角波。再定义一个函数S用来生成所示信号。然后对S进行变化操作。

程序如下:
定义函数d

%锯齿波一侧

function y=d(x)
    for i=1:length(x)
        if x(i)>=-1 & x(i)<1  %由于输入的x是个向量,而要对数值对比,则需要用向量中的元素对比
            y(i)=x(i)+1;
        else
            y(i)=0;
        end 
    end

生成目标波形的程序:

%生成双锯齿信号
clc,clear;
t=linspace(-3,5,1000);
f=d(t)+d(t-2);
subplot(3,1,1);plot(t,d(t));ylabel('y(t)');
subplot(3,1,2);plot(t,d(t-2));ylabel('y(t-2)');
subplot(3,1,3);plot(t,f,'r');ylabel('f(t)');

结果如下:
在这里插入图片描述

定义函数S

function y=S(t)
y=d(t)+d(t-2);

对目标函数进行变换操作的主程序

%对双锯齿波信号进行变换操作
t=linspace(-6,10,10000);
f1=S(1-t);
f2=S(2*t+2);
f3=S(2-t./3);
f4=(S(t)+S(2-t)).*u(1-t);

subplot(5,1,1);plot(t,S(t));ylabel('S');
subplot(5,1,2);plot(t,f1);ylabel('f1');
subplot(5,1,3);plot(t,f2);ylabel('f2');
subplot(5,1,4);plot(t,f3);ylabel('f3');
subplot(5,1,5);plot(t,f4);ylabel('f4');

结果如下:
在这里插入图片描述

最后

以上就是无语小土豆为你收集整理的信号与系统——matlab实现(2)常用信号生成及信号变换内容概述程序实例扩展练习的全部内容,希望文章能够帮你解决信号与系统——matlab实现(2)常用信号生成及信号变换内容概述程序实例扩展练习所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部