Digital Signal Processing Using Matlab读书笔记 第二章(二)(P10-P15)

本文详细介绍了MATLAB中进行序列操作的方法,包括信号相加、相乘、缩放、平移、折叠、取样总和、取样相乘、信号能量和功率的计算。提供的函数如sigadd和sigmult实现了加法和乘法操作,同时讨论了信号处理中的关键概念。示例展示了如何应用这些函数处理不同类型的序列。
摘要由CSDN通过智能技术生成

对序列的操作

1.信号相加

在这里插入图片描述
在matlab中可以用"+“符号但是X1(n)和X2(n)的长度必须相等,如果序列长度不相等,或者相同长度序列的取样位置不同,我们不能直接用”+"符号,我们必须首先扩充X1和X2,以便于它们有相同的位置向量n,这需要格外注意matlab的索引操作,特别的,逻辑操作符“&”,关系操作符“<=”和“==”以及查找函数(find函数作用是查询非零元素的位置)都需要X1和X2的长度相等,下面的函数称为sigadd函数,解释了这些操作

function [y,n]=sigadd(x1,n1,x2,n2)
n=min(min(n1),min(n2)):max(max(n1):max(n2));
y1=zeros(1,length(n));y2=y1;
y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;
y=y1+y2;

该函数的使用会在例2.2给出

2.信号相乘

在这里插入图片描述
在matlab可以用. * 进行乘操作,. *的操作方式和+相同,下面是sigmult函数的代码

function [y,n]=sigmult(x1,n1,x2,n2)
n=min(min(n1),min(n2)):max(max(n1):max(n2));
y1=zeros(1,length(n));y2=y1;
y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;
y=y1.*y2;

它的使用会在例2.2给出

3.缩放比例

在这个操作中,每个取样值都会被乘以缩放值α
在这里插入图片描述
可以用*操作符进行缩放操作

4.平移

在这里插入图片描述
代码如下

function [y,n]=sigshift(x,m,n0)
n=m+n0;y=x;
5.折叠

在这里插入图片描述
代码如下

function [y,n]=sigfold(x,n)
y=fliplr(x);n=-fliplr(n);

fliplr:左右翻转矩阵B=fliplr(A)如果A是一个行向量,fliplr(A)将A中元素的顺序进行翻转,如果A是一个列向量,fliplr(A)还是等于A

6.取样总和

在这里插入图片描述
它可以使用sum(x(n1:n2))函数实现

7.取样相乘

在这里插入图片描述
它可以使用prod(x(n1:n2))函数实现

8.信号能量

在这里插入图片描述
代码如下

Ex=sum(x.^conj(x));

Ex=sum(abs(x).^2);
9.信号功率

周期序列的平均功率如下
在这里插入图片描述
例2.1
在这里插入图片描述

n=[-5:5];
x=2*impseq(-2,-5,5)-impseq(4,-5,5);
stem(n,x);title('sequence in problem 2.1a')
xlabel('n');ylabel('x(n)');

在这里插入图片描述
在这里插入图片描述

n=[0:20];
x=n.*(stepseq(0,0,20)-stepseq(10,0,20))+10*exp(-0.3*(n-10)).*(stepseq(10,0,20)-stepseq(20,0,20));
subplot(2,2,3); stem(n,x); title('sequence in problem 2.1b');
xlabel('n'); ylabel('x(n)');

在这里插入图片描述

n=[0:50];
x1=cos(0.04*pi*n);
x2=0.2*randn(size(n));
x=x1+x2;
subplot(2,2,2);
stem(n,x);
title('Sequence in problem 2.1c')
xlabel('n');
ylabel('x(n)');

在这里插入图片描述
Y = randn(n)
返回一个nn的随机项的矩阵。如果n不是个数量,将返回错误信息。
Y = randn(m,n) 或 Y = randn([m n])
返回一个m
n的随机项矩阵。
Y = randn(m,n,p,…) 或 Y = randn([m n p…])
产生随机数组。
Y = randn(size(A))
返回一个和A有同样维数大小的随机数组。
randn
返回一个每次都变化的数量。
在这里插入图片描述

x1=[5,4,3,2,1];
x1=x1'*ones(1,4);
x1=x1(:);
x1=x1';
stem(n,x1);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值