MATLAB信号处理

编程入门 行业动态 更新时间:2024-10-04 13:29:49

MATLAB<a href=https://www.elefans.com/category/jswz/34/1765793.html style=信号处理"/>

MATLAB信号处理

序列相加与相乘

  1. 相加
    信号相加的表达式:
    x ( n ) = x 1 ( n ) + x 2 ( n ) x(n) = x_1(n) + x_2(n) x(n)=x1​(n)+x2​(n)

     clear all;n1 = 0:3;x1 = [2 0.5 0.9 1];subplot(311);stem(n1,x1);axis([-1 9 0 2.1]);n2 = 0:7;x2 = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7];subplot(312);stem(n2,x2)axis([-1 9 0 0.9]);n = 0:7;x1 = [x1 zeros(1,8 - length(n1))];x2 = [zeros(1,8 - length(n2)) x2];x = x1 + x2;subplot(313);stem(n,x);axis([-1 9 0 2.1]);
    

  2. 相乘
    信号相乘的表达式,即两个序列的乘积(或称"点乘"),表达式为:
    x ( n ) = x 1 ( n ) ∗ x 2 ( n ) x(n) = x_1(n) * x_2(n) x(n)=x1​(n)∗x2​(n)

     clear all;n1 = 0:3;x1 = [3 0.6 0.8 1];subplot(311);stem(n1,x1);axis([-1 8 0 2.1]);n2 = 0:7;x2 = [0 0.2 0.2 0.3 0.5 0.5 0.6 0.9];subplot(312);stem(n2,x2);axis([-1 8 0 0.8]);n = 0:7;x1 = [x1 zeros(1,8 - length(n1))];x2 = [zeros(1,8 - length(n2)) x2];x = x1 .* x2;subplot(313);stem(n,x);axis([-1 8 0 0.35]);
    

序列累加与序列值乘积

  1. 序列累加
    序列累加式求序列x(n)两点n1和n2之间的所有序列值之和,定义如下:
    ∑ n = n 1 n 2 x ( n ) = x ( n 1 ) + … … + x ( n 2 ) \displaystyle \sum^{n_2}_{n=n_1}{x(n)} = x(n_1) + ……+x(n_2) n=n1​∑n2​​x(n)=x(n1​)+……+x(n2​)

     n1 = [1 2 3 4];sum(n1)
    

    执行结果:

     ans =10
    
  2. 序列乘积
    序列值乘积是是x(n)两点n1和n2之间的所有序列值的乘积,定义如下:
    ∏ n 1 n 2 = x ( n 1 ) ∗ … … ∗ x ( n 2 ) \displaystyle \prod^{n_2}_{n_1} = x(n_1) * ……* x(n_2) n1​∏n2​​=x(n1​)∗……∗x(n2​)

     clear all;x1 = [2 0.5 0.9 2 2];x = prod(x1)
    

    执行结果:

     x =3.6000
    

序列翻转与序列移位

  1. 序列翻转

    序列翻转表达式: y ( n ) = x ( − n ) y(n)=x(-n) y(n)=x(−n)

     clear all;nx = -2:5;x = [2 3 4 5 6 7 8 9];ny = -fliplr(nx);y = fliplr(x);subplot(121);stem(nx,x,'.');axis([-6 6 -1 9]);grid on;xlabel('n');ylabel('x(n)');title('原序列');subplot(122);stem(ny,y,'.');axis([-6 6 -1 9]);grid on;xlabel('n');ylabel('x(n)');title('翻转后的序列');set(gcf,'color','w');
    

  2. 序列移位

    序列移位表达式: y ( n ) = x ( n − n 0 ) y(n)=x(n-n_0) y(n)=x(n−n0​)

     clear all;close all;clc;nx = -2:5;x = [9 8 7 6 5 5 5 5];y = x;ny1 = nx + 3;ny2 = nx - 2;subplot(211);stem(nx,x,'.');axis([-5 9 -1 6]);grid on;xlabel('n');ylabel('x(n)');title('原序列');subplot(223);stem(ny1,y,'.');axis([-5 9 -1 6]);grid on;xlabel('n');ylabel('y1(n)');title('右移3位后的序列');subplot(224);stem(ny2,y,'.');axis([-5 9 -1 6]);grid on;xlabel('n');ylabel('y2(n)');title('左移2位后的序列');set(gcf,'color','w');
    

连续时间信号的尺度变换

连续时间信号的尺度变换,是指将信号的横坐标进行扩展或压缩,即将信号f(t)的自变量t更换为at,当a>1时,信号f(at)以原点为基准,沿时间轴压缩到原来的1/a;当a<1时,信号f(at)沿时间轴扩展至原来的1/a倍。

t = -4:0.001:4;
T = 2;
f = rectpuls(t,T);
ft = rectpuls(2*t,T);
subplot(2,1,1);
plot(t,f);
axis([-4 4 -0.5 1.5])
subplot(2,1,2);
plot(t,ft);
axis([-4 4 -0.5 1.5])


连续时间信号的奇偶分解
信号的奇偶分解原理:任何信号都可以分解为一个偶分量和一个奇分量之和的形式,因为任何信号总可以写成下式:
f ( t ) = 1 / 2 [ f ( t ) + f ( t ) + f ( − t ) − f ( − t ) ] = 1 / 2 [ f ( t ) + f ( − t ) ] + 1 / 2 [ f ( t ) − f ( − t ) ] f(t)=1/2[f(t)+f(t)+f(-t)-f(-t)]=1/2[f(t)+f(-t)]+1/2[f(t)-f(-t)] f(t)=1/2[f(t)+f(t)+f(−t)−f(−t)]=1/2[f(t)+f(−t)]+1/2[f(t)−f(−t)]
偶分量: f e ( t ) = 1 / 2 [ f ( t ) + f ( − t ) ] f_e(t)=1/2[f(t)+f(-t)] fe​(t)=1/2[f(t)+f(−t)]
奇分量: f o ( t ) = 1 / 2 [ f ( t ) − f ( − t ) ] f_o(t)=1/2[f(t)-f(-t)] fo​(t)=1/2[f(t)−f(−t)]

syms t;
f = sym('cos(t + 1) + t');
f1 = subs(f,t,-t);
g = 1/2 * (f + f1);
h = 1/2 * (f - f1);
subplot(311);fplot(f,[-8,8]);title('原信号');
subplot(312);fplot(g,[-8,8]);title('偶信号');
subplot(313);fplot(h,[-8,8]);title('奇信号');


信号的微分和积分

  1. 微分:对于连续时间信号,其微分运算用函数diff来完成,语法格式:

     diff(function,'variable',n)
    

    function表示的是要进行求导运算的信号,或者被赋值的符号表达式,variable为求导运算的变量,n为求导的阶数,默认值为一阶导数

     syms t f2;f2 = t * (2 * heaviside(t) - heaviside(t - 1)) + heaviside(t - 1);t = -1:0.01:2;subplot(121);ezplot(f2,t);title('原函数');grid on;ylabel('x(t)');f = diff(f2,'t',1);subplot(122);ezplot(f,t);title('微分函数');grid on;ylabel('x(t)');
    

  2. 积分
    连续信号的积分匀速那用函数int来完成,语句格式为

     int(function,'variable',a,b)
    

    其中function表示要进行积分的信号,或者被赋值的符号表达式,variable为求导运算的独立变量,a,b为积分上、下限,a和b被省略时为求不定积分

     syms t f1;f1 = 2 * heaviside(t) - heaviside(t - 1);t = -1:0.01:2;subplot(121);ezplot(f1,t);title('原函数');grid on;f = int(f1,'t');subplot(122);ezplot(f,t);grid on;title('积分函数');ylabel('x(t)');
    

参考文献:

  1. 《精通MATLAB信号处理》,沈再阳编写,清华大学出版社

更多推荐

MATLAB信号处理

本文发布于:2024-03-09 03:32:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1723636.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:信号处理   MATLAB

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!