数字信号处理——用MATLAB产生常见离散信号

目录

一、序

二、常见序列及其表示代码 

1、单位冲激响应序列

2、单位阶跃响应序列

         3、 正弦序列

         4、指数序列

         5、复指数序列 

 三、总结


一、序

        在 MATLAB 中,序列是用矩阵向量表示,但它没有包含采样信息,即序列位置信息,为此,要表示一个序列需要建立两个向量:一是时间序列 n,或称位置序列,另一个为取值序列 x。表示如下:n=[…,-3,-2,-1,0,1,2,3,…] ,x=[…,-6,4,7,4,-3,8,2,…]。
       一般程序都从 0 位置起始,即 x= [x(0), x(1), x(2),…]。对于多维信号需要建立矩阵来表示,矩阵的每个列向量代表一维信号。(这里要注意,MATLAB中数组索引必须为正整数或逻辑值。)
       

二、常见序列及其表示代码 

1、单位冲激响应序列

\delta\left ( n \right ) = \left\{\begin{matrix} 1,n= 0& \\ 0,n\neq 0&\end{matrix}\right.

        冲激响应函数仅在n=0处有值,因此可以借用MATLAB函数“zeros”建立全0序列。

MATLAB代码如下:

N=40;%设置需要的序列的长度
delta=zeros(1,N+1);   %用zeros函数创建零序列
delta(N/2+1)=1;   %规定N/2+1处的值为1
figure(1)   %画图
stem(-N/2:N/2,delta);   %用stem绘制序列更清晰
xlabel('time');ylabel('amplitude');title('delta function');
hold on;

效果如下:

 

2、单位阶跃响应序列

u\left ( n \right )=\left\{\begin{matrix} 1,n\geq 0 & & \\ 0,n< 0& & \end{matrix}\right.

        单位阶跃响应序列在n<0时等于0,在n>0时等于1,因此可以借用MATLAB函数zeros和ones创建部分全0序列和部分全1序列。

MATLAB代码如下:

N=40;%设置需要的序列的长度
u=[zeros(1,N/4) ones(1,N)];   %用zeros函数创建0序列,ones创建1序列并合并成数组形式
figure(1)   %画图
stem(-N/4:N-1,delta);   %用stem绘制序列更清晰
xlabel('time');ylabel('amplitude');title('unit step function');axis([-10 40 0 1]);
hold on;

效果如下:

3、 正弦序列

\sin =A\left ( \omega n +\varphi \right )

        正弦序列的变量由幅度A,周期2\pi/\omega和相位\varphi。可以借助MATLAB函数sin构建。

MATLAB函数如下:

N=40;   %设置序列长度
w=4;   %设置正弦序列角频率
n=1:N;   %创建长度为N的数组n
A=2;   %设置正弦序列幅度
phi=pi/6;   %设置正弦序列相位
fun2=A*sin(w.*n+phi); 
figure(1)   %画图
stem(n,fun2);
xlabel('time');ylabel('amplitude');title('sin funtion')

效果如下:

 4、指数序列

x\left ( n \right )=a^{n} ,-\infty< n< +\infty

MATLAB代码如下:

N=40;   %设置序列长度
a=0.5;   %设置a
n=1:N;   %创建序列n
fun=a.^n;   %指数序列
stem(n,fun);   %画图
xlabel('time');ylabel('amplitude');title('a^n funtion')

效果如下:

5、复指数序列 

x(n)=K_{0}e^{(a+bj)n}

MATLAB代码如下:

N=40;   %设置序列长度
K0=4;   %设置序列幅度
n=1:N;    %构建长度为N的序列n
a=-0.2;b=0.5;   %设置参数值
fun=K0*exp((a+1j*b).*n);   
figure(1)   %画图
subplot(4,1,1) 
stem(n,abs(fun));xlabel('time');ylabel('amplitude');title('K0exp(a+bi)n funtion') %函数幅值
subplot(4,1,2) 
stem(n,real(fun));xlabel('time');ylabel('Real');title('K0exp(a+bi)n funtion') %函数实部
subplot(4,1,3) 
stem(n,imag(fun));xlabel('time');ylabel('Image');title('K0exp(a+bi)n funtion') %函数虚部
subplot(4,1,4) 
stem(n,angle(fun));xlabel('time');ylabel('phase');title('K0exp(a+bi)n funtion') %函数相位

效果如下:

 三、总结

        在数字信号处理中常用的信号有指数信号、正弦信号、余弦信号、方波信号、锯齿波信号
等,在 MATLAB 语言中分别由 exp, sin, cos, square, sawtooth 等函数来实现。
        可利用这些典型序列作用在系统上,研究测试系统的某些时域、频域特性。例如最基本的单位冲激响应函数,它作用在系统上,可以得到系统的单位抽样响应,从而得到系统的频率响应。又可以利用冲激响应函数表示任意序列。
  • 6
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值