本博文介绍几种基本序列运算的MATLAB函数表示,之后通过实例调用这些函数实现序列的基本运算。

目录

1. 信号相加

2. 信号相乘

3. 信号翻转

4. 加权(乘以常数)

5. 移位

6. 样本累加

7. 样本乘积

8. 信号能量

9. 信号功率


1. 信号相加

这是一个样本对样本的相加。表示式为:

注意:序列的位置要对应,长度要相等,如果长度不等,则要扩大或延长使长度相等且位置对应。

对应的函数为:

function [y,n] = sigadd(x1,n1,x2,n2)
% implements y(n) = x1(n) + x2(n)
% [y,n] = sigadd(x1,n1,x2,n2)
%——————————————————————————————
% y = sum sequence over n, which includes n1 and n2
% x1 = first sequence over n1
% x2 = second sequence over n2( n2 can be different from n1)
%
n = min( min(n1), min(n2) ):max( max(n1), max(n2) ); %duration of y(n)
y1 = zeros(1,length(n)); y2 = y1; %initialization
y1( find( ( n >= min(n1) )&( n <= max(n1) ) == 1  )  ) = x1; %x1 with duration of y1
y2( find( ( n >= min(n2) )&( n <= max(n2) ) == 1  )  ) = x1; %x2 with duration of y2
y = y1 + y2;

代码中用到了find线性索引函数,不了解的话可以参考博文:【 MATLAB 】find 函数的使用(线性索引)

2. 信号相乘

这是一个样本对样本的相乘(或称为点乘‘.*’),表示式为:

对+运算符所有的限制同样对.*运算符适用。

下面直接给出函数:

function [y,n] = sigmult(x1,n1,x2,n2)
% implements y(n) = x1(n)* x2(n)
%[y,n]=sigmult(x1,n1,x2,n2)
%_____________________________
% y = product sequence over n, which includes n1 and n2
% x1 = first sequence over n1
% x2 = second sequence over n2( n2 can be different from n1)
%
n = min( min(n1), min(n2) ):max( max(n1), max(n2) ); %duration of y(n)
y1 = zeros(1,length(n)); y2 = y1; %initialization
y1( find( ( n >= min(n1) )&( n <= max(n1) ) == 1  )  ) = x1; %x1 with duration of y1
y2( find( ( n >= min(n2) )&( n <= max(n2) ) == 1  )  ) = x2; %x2 with duration of y2
y = y1 .* y2;

3. 信号翻转

在MATLAB中,这个运算对样本值用函数fliplr(x)实现,对样本位置通过函数-fliplr(n)实现,函数如下:

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

不了解fliplr(x)的话,看博文:【 MATLAB 】fliplr 函数介绍(从左到右翻转阵列)


4. 加权(乘以常数)

a{ x(n) } = { a* x(n) }

在MATLAB中,直接使用*运算符就可以了。


5. 移位

关于移位,我单独写了一篇博文:

【 MATLAB 】序列运算之序列移位的函数实现


6. 样本累加

样本累加区别于信号相加,它是将该序列的样本值全部加起来,使用 sum( x(n1:n2) )函数来实现。


7. 样本乘积

样本乘积有别于信号相乘,它是将该序列的样本值连乘得到,使用函数 prod( x(n1:n2) )即可实现。

prod函数的相关知识,见博文:【 MATLAB 】prod 函数介绍(Product of array elements)


8. 信号能量

一个序列的能量有下式给出:

下面给出两种方法计算信号能量:

Ex = sum( x.* conj(x) )  % one approach
Ex = sum( abs(x) .^2 ) % another approach

9. 信号功率

基波周期为N的周期序列  的平均功率给出为:

相应的MATLAB代码为:

P=(1/N)sum( abs( x(1:N-1) ).^2 )

实例解析

,

确定并画出下列序列:

a.

b.

题解:

clc
clear
close all%generate x(n)
n = [-2:10];
x = [1:7,6:-1:1];subplot(3,1,1)
stem(n,x);
title('original sequence');
xlabel('n');ylabel('x(n)');%x1(n)=2x(n-5)-3x(n+4)
[x11,n11]= sigshift(x,n,5);
[x12,n12]= sigshift(x,n,-4);
[x1,n1] = sigadd(2*x11, n11, -3*x12, n12);subplot(3,1,2)
stem(n1,x1);
title('sequence in example a');
xlabel('n');ylabel('x1(n)');%x2(n) = x(3-n) + x(n)x(n-2)
[x21,n21]=sigfold(x,n);
[x21,n21] = sigshift(x21,n21,3);[x22,n22] = sigshift(x,n,2);
[x22,n22] = sigmult(x22,n22,x,n);[x2,n2] = sigadd(x21,n21,x22,n22);subplot(3,1,3);
stem(n2,x2);
title('sequence in example b');
xlabel('n');ylabel('x2(n)');

【 MATLAB 】基本序列运算及其MATLAB的等效表示相关推荐

  1. matlab m序列扩频,基于matlab的移位寄存器法m序列的产生

    描述 扩频通信是在民用和军用都有广泛应用的一种通信技术,自从其诞生就受到了广泛关注. 扩频通信中频谱的扩展是通过一个独立的伪随机序列来完成的. 其中 m 序列是最常用的一种伪随机码,本文在 matla ...

  2. 【 MATLAB 】序列运算之序列移位的函数实现

    这种运算有点理解,反正我是觉得有点绕,所以单独拿出来,表示注重. 在这种运算中,x(n)的每个样本都要移位一个量k得到一个移位的序列y(n). 如果令m=n-k,那么n = m + k,上面运算给出为 ...

  3. 基于MATLAB完成卷积运算,基于Matlab的离散卷积

    基于Matlab 的离散卷积 刘国良 (洛阳理工学院 河南洛阳 471000) 摘 要:卷积运算广泛用于通讯.电子.自动化等领域的线性系统的仿真.分析及数字信号处理等方面.在Matlab 中可以使用线 ...

  4. matlab 异或运算符号,MATLAB运算符

    算术运算符 逻辑运算符 关系运算符 位运算 集合运算 算术运算符 MATLAB 的工作针对的是整个矩阵和阵列,它允许两种不同类型的算术运算:矩阵算术运算 阵列算术运算 矩阵的算术运算是线性代数中的定义 ...

  5. matlab 高斯序列,如何用MATLAB产生高斯随机序列

    MATLAB命令是normrnd 功能:生成服从正态分布的随机数列,也就是你需要的高斯随机序列 >> help normrnd NORMRND Random arrays from the ...

  6. 【 MATLAB 】两个序列的卷积和运算的MATLAB实现(1)

    设矩形脉冲  是脉冲响应  的LTI系统的输入,求输出 y(n). 下面的脚本中用到了一个自定义的函数,也就是两个信号相加的函数: 相关博文:[ MATLAB ]基本序列运算及其MATLAB的等效表示 ...

  7. 【 MATLAB 】序列的奇偶分解的 MATLAB 函数编写实践

    序列 x(n)的奇偶分解的公式为: 编写一个序列 x(n) 的奇偶分解式 xe(n) 和 xo(n),需要考虑的问题是序列长度,下标的变化. 这里必须做个声明,下面的程序中用到了前几篇博客中的几个函数 ...

  8. 【 MATLAB 】两个序列的卷积和运算的MATLAB实现(2)

    已知下面两个序列: 求这两个序列的卷积. 求卷积的函数是conv,但是使用这个函数有个问题,就是下标问题,也就是求卷积之后的元素值的位置.因此,我们必须要定一个起始点和一个结束点. 方法: 是两个有限 ...

  9. MATLAB程序设计教程(2)——MATLAB矩阵及其运算

    第2章  MATLAB矩阵及其运算 2.1  变量和数据操作 2.2  MATLAB矩阵 2.3  MATLAB运算 2.4  矩阵分析 2.5  矩阵的超越函数 2.6  字符串 2.7  结构数据 ...

最新文章

  1. 使用 $.grep() 方法
  2. windows下用GCC编译DLL
  3. 【jzoj3734,Usaco2014Open银组】双导航(gpsdual)
  4. fetch 不是xhr_春招|前端2019应届春招:不是被大厂选,而是选大厂(字节跳动,美团,网易)...
  5. python 怎么表示sqlserver null_如何使用Python将sqlserver查询输出写入.txt文件?
  6. C++类构造函数与析构函数
  7. Mybatis的数据库连接池
  8. autohold有什么弊端吗_自动驻车AUTO HOLD有啥作用?怎样使用?
  9. C#中如何截取Windows消息来触发自定义事件
  10. ibatis基础(五):删除指定id的单个对象
  11. 萦绕在头脑中的思路_我的编程梦们 【更新至2010.06.03】
  12. hallo world
  13. python名字排序_python 中文排序(按拼音)
  14. win10电脑右键视频或者图片文件卡死
  15. 英特尔核显驱动hd630_英特尔首款独显Xe Max 评测出炉:低于移动端 GTX 1050 Ti
  16. lack名词形式_lack是什么意思_lack的翻译_音标_读音_用法_例句_爱词霸在线词典
  17. [新手教程]如何使用 AirDrop 发送文件
  18. ReactNative 深层连结
  19. 【Havel 定理】Degree Sequence of Graph G
  20. LVGL lv_line线条(15)

热门文章

  1. 【笔记】C++ 简化位图图像操作
  2. vsftpd安装及虚拟用户认证
  3. 新时代网管的十二大主要职责(一)
  4. html照片4张 9张布局,css实现朋友圈照片排列布局
  5. 学完python基础开始学爬虫_零基础入门Python爬虫不知道怎么学?这是入门的完整教程...
  6. php嵌套模板,thinkphp3.1自定义模板标签嵌套实现
  7. java nio channel原理_Java NIO 选择器(Selector)与通道(Channel) 原理 | 学步园
  8. java 遇到的问题_Java常见问题汇总(一)
  9. openssh漏洞_漏洞预警 | OpenSSH 命令注入漏洞
  10. python实现远程登录_python远程登录代码