常见离散信号产生和实现

更新时间:2023-07-20 19:50:26 阅读: 评论:0

数字信号处理实验报告
实验1 常见离散信号产生和实现
一、实验目的
1、加深对常用离散信号的理解;
2、熟悉使用MATLAB在时域中产生一些基本的离散时间信号。
二、实验原理
天然气ng
MATLAB 语言提供了一系列函数用来产生信号,如exp, sin, cos, square, sawtoothones, zeros英语广播电台等函数。
1. 基本信号序列
1) 单位抽样序列
 
MATLAB中可以利用zeros()函数实现。x=[1 zeros(1, n-1)]
示范程序:carbonblack
% Program P1_1
% Generation of a Unit Sample Sequence
clf;
% Generate a vector from -10 to 20
n = -10:20;
squeezed% Generate the unit sample quence
u = [zeros(1,10) 1 zeros(1,20)];
% Plot the unit sample quence
stem(n,u);
xlabel('Time index n');ylabel('Amplitude');
title('Unit Sample Sequence');
axis([-10 20 0 1.2]);
如果在时间轴上延迟了k个单位,得到即:
 
2) 单位阶跃序列
 
MATLAB中可以利用ones()函数实现。
3) 实指数序列
MATLAB实现:
4) 复指数序列
MATLAB实现:
5) 随机序列
  MATLAB提供了两种随机信号:
        rand(1,N) 产生[0,1]上均匀分布的随机矢量。
        randn(1,N) 产生均值为0,方差为1的高斯随机序列,即白噪声序列。
2. 基本周期波形
1) 方波
MATLAB工具箱函数square可以产生方波;
t=0:0.1*pi:6*pi;
y=square(t);
axis([0 7*pi -1.5 1.5]);
plot(t,y);
xlabel(‘时间 t’);
ylabel(‘幅度y’);
2) 正弦波
MATLAB
罗马数字53) 锯齿波
工具箱函数sawtooth函数可以产生锯齿波
Fs=10000;
t=0:1/Fs:1.5;  %抽样长度1.5s, 抽样频率为10kHz
x=sawtooth(2*pi*50*t);  %信号频率为50Hz
plot(t, x);
axis()[0 0.2 -1 1];  %画出0.2秒的波形
3. 基本非周期波形
工具箱函数chirp能产生一种扫射频率信号,其特点是信号的瞬时频率随时间按照一定规律变化
      t=0:1/1000:2      %抽样频率1kHz, 抽样时间2s.
      x=chirp(t, 0.1, 150)  %0时刻为DC信号,1s时频率为150Hz
      specgram(x, 256, 1000, 256, 250);
4. sinc信号
MATLAB实现:
      t=linspace(-5,5);
      x=sinc(t);
      plot(t,x);
5. 序列的操作
1) 信号加  x(n)=x1(n)+x2(n)
MATLAB实现:
    x=x1+x2;
注意:x1x2序列应该具有相同的长度,位置对应,才能相加。
2) 信号乘  x(n)=x1(n)*x2(n)
MATLAB实现:
    x=x1.*x2;    %数组乘法
3) 改变比例  y(n)=k*x(n)
MATLAB实现:
    y=k*x;validuntil
4) 折叠      y(n)=x(-n);
MATLAB实现:
    y=fliplr(x);
5) 抽样和     
MATLAB实现:
    y=sum(x(n1:n2));
6) 抽样积     
MATLAB实现:
    y=prod(x(n1:n2));
7) 信号能量 
MATLAB实现:
    Ex=sum(abs(x).^2);
8) 信号功率 
MATLAB实现:
Px=sum(abs(x).^2)/ N;
实验和程序:
1)    单位抽样序列
function uss(n)%构造函数                                   
N=0:n-1
u = [1, zeros(1,n-1)];%构造矩阵
stem(N,u);
xlabel('Time index n');ylabel('Amplitude');
title('Unit Sample Sequence');
axis([-10 n 0 1.2]);
右图为取n10的图形
2)    单位阶跃序列
function jieyue(n)%构造函数                               
N = -10:n-1;
u = [zeros(1,10) ones(1,n)];
stem(N,u);
xlabel('Time index n');ylabel('Amplitude');
title('Unit jump Sequence');
axis([-10 n 0 1.2]);
右图为取n10的图形
3)    实指数序列
function index(z1,N)%构造函数
% n1=0:N;
n=0:N/2;
x=z1.^n;
stem(n,x);
xlabel('Time index n');ylabel('Amplitude');
右图为取z1=2,N=30的图形
4)    复指数序列
function findex(z1,z2)%构造函数
N=10;
n=0:N/2;
x=exp((z1+j*z2).*n);
stem(n,abs(x));
xlabel('Time index n');ylabel('Amplitude');
右图为z1=2z2=3的图形
5)    方波
function square1(g)%G为方波的占空比     
t=0:0.1:6*pi;
y=square(t,g);
plot(t,y);
xlabel('时间 t');
ylabel('幅度y');
axis([0 7*pi -1.5 1.5]);  %要放在最后才可以正确显示
右图分别为G=70G=30的图形
6)正弦波
function sin1(N,A,Fs,f,Q)%N为显示                  的范围,A为幅度,
  %FS为抽样频率,f为模拟信号的频率,Q为初相位
n=0:N/2;
x=A*sin(2*pi*f*n/Fs+Q)
stem(n,x);
xlabel('Time index n');ylabel('Amplitude');
axis([0 N/2 -2.5 2.5]);
右图为sin1(60,2,1000,50,10)的图形
7)锯齿波
function saw(f,F)%f为锯齿波的频率,F为间隔                %其中F不能取太大,不易观                        察图形         
t=0:1/F:2;
y=sawtooth(2*pi*f*t);
plot(t,y);
axis([0 2 -1.2 1.2]);
右图为saw(10,100)的图形
8)基本非周期波形
%利用chirp短裤的英文来实现   
t=0:1/500:2      %抽样频率500Hz, 抽样时间2s.   
x=chirp(t, 0.1, 150)  %0时刻为DC信号,1s时频率为150Hz 
specgram(x, 256, 500, 256, 250);
右图分别为抽样频率为50010000的图形
9    sinc信号shockresist
    function sinc1(t1,t2,A)%[t1,t2]为定义域A为幅度
  t=linspace(t1,t2);   
  x=A*sinc(t);     
  plot(t,x);
右图为[t1,t2]=[-1010]A=2的图形
10)序列相加                   
  function quenceplus(x1,x2)
  n1=length(x1);
  n2=length(x2);
  n=-n1/2:(n1/2-1);
subplot(221)
  stem(n,x1)
  subplot(222)
  stem(n,x2)
  if(n1==n2)      % x1x2    的长度必须相同
  x=x1+x2;   
  subplot(223)
  stem(n,x);
  axis([-n1 n1 0 2]) 
  el error('x1x2不一样长')
  end
右图为x3=[ones(1,20),ones(1,10),ones(1,10)];
x4=[zeros(1,20),ones(1,10),zeros(1,10)];
quenceplus(x3,x4)的图形
如果输入
x3=[ones(1,10),ones(1,10),ones(1,10)];
x4=[zeros(1,20),ones(1,10),zeros(1,10)];
则会显示x1x2不一样长
什么是sap
11)序列相
function quencenmultiply(x1,x2)
  n1=length(x1);
  n2=length(x2);
  n=-n1/2:(n1/2-1);
subplot(221)
  stem(n,x1)
  subplot(222)
  stem(n,x2)
  if(n1==n2)      % x1x2的长度必须相同
    x=x1.*x2;
  subplot(223)
    stem(n,x);
  axis([-n1 n1 0 2]) 
  el disp('error  x1x2不一样长')
  end
右图为x3=[ones(1,20),ones(1,10),ones(1,10)];
varyx4=[zeros(1,20),ones(1,10),zeros(1,10)];

本文发布于:2023-07-20 19:50:26,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/1107518.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:信号   序列   产生   频率
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图