序列 x(n)的奇偶分解的公式为:

编写一个序列 x(n) 的奇偶分解式 xe(n) 和 xo(n),需要考虑的问题是序列长度,下标的变化。

这里必须做个声明,下面的程序中用到了前几篇博客中的几个函数,这里给贴出来:

信号相加:

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  )  ) = x2; %x2 with duration of y2
y = y1 + y2;

信号移位:

function [y,n] = sigshift(x,m,k)
%implements y(n) = x(n - k)
%_________________________
%[y,n] = sigshift(x,m,k)
%
n = m+k;
y = x;

相关博文:【 MATLAB 】基本序列运算及其MATLAB的等效表示

单位阶跃序列:

function [x,n]=stepseq(n0,n1,n2);
% generate x(n) = u(n - n0); n1 <= n <= n2
%_____________________________________________
%[x,n] = stepseq(n0, n1, n2);
%
n = [n1:n2];
x = [(n-n0) >= 0];

相关博文:【 MATLAB 】常用的离散时间序列的 Matlab 产生

下面给出函数程序:

function [xe, xo, m] = evenodd(x, n)
% Real signal decomposition into even and odd parts
%__________________________________________________
%[xe, xo, m] = evenodd(x, n)
%
if any( imag(x) )error('x is not a real sequence!');
end% Ensure m of xe and xo
m = - fliplr(n);
m1 = min([m,n]);
m2 = max([m,n]);
m = m1:m2;% Ensure x over m
nm = n(1) - m(1);
n1 = 1:length(n);
x1 = zeros(1,length(m)); % initialization
x1(nm + n1) = x;
x = x1; % new x which enlarge index n% xe and xo
xe = 0.5*(x + fliplr(x));
xo = 0.5*(x - fliplr(x));

序列和及其位置分别装入 x 和 n 数组。首先确认是否已知序列是实序列并在m数组中确定偶部和奇部分量的位置,最后将所得奇偶分量存入xe和xo数组中。

下面以一个实例来验证上述函数:

将x(n)分解为奇偶分量。

clc
clear
close alln = 0:10;
x = stepseq(0,0,10) - stepseq(10,0,10);
[xe, xo, m] = evenodd(x,n);subplot(2,2,1);
stem(n,x,'filled');
title('Rectangular pulse');
xlabel('n');ylabel('x(n)');
axis([-10,10,0,1.2]);subplot(2,2,2);
stem(m,xe,'filled');
title('Even part');
xlabel('n');ylabel('xe(n)');
axis([-10,10,0,1.2]);subplot(2,2,4);
stem(m,xo,'filled');
title('Odd part');
xlabel('n');ylabel('xo(n)');
axis([-10,10,-0.6,0.6]);


事实上,这篇博文到这里已经结束了,那我还想看看序列x(n)= u(n) - u(n-10)的合成过程:

clc
clear
close all[u1,n1] = stepseq(0,0,10);subplot(3,1,1)
stem(n1,u1,'filled');
title('u(n)');
ylabel('u(n)');xlabel('n');
axis([-10,10,0,1.2]);[u2,n2] = sigshift(u1,n1,10);
subplot(3,1,2)
stem(n2,u2,'filled');
title('u(n-10)')
xlabel('n');ylabel('u(n - 10)');
axis([0,20,0,1.2]);[x,n] = sigadd(u1,n1,-u2,n2);subplot(3,1,3)
stem(n,x,'filled');
title('Rectangular sequence');
xlabel('n');ylabel('x(n)= u(n) - u(n -10)');
axis([-10,10,0,1.2]);

【 MATLAB 】序列的奇偶分解的 MATLAB 函数编写实践相关推荐

  1. MATLAB学习笔记(七)——MATLAB解方程与函数极值

    (一)线性方程组求解 包含n个未知数,由n个方程构成的线性方程组为: 其矩阵表示形式为: 其中 一.直接求解法 1.左除法 x=A\b; 如果A是奇异的,或者接近奇异的.MATLAB会发出警告信息的. ...

  2. 数字图像处理-DFTDCTWHT小波变换分解重构(Matlab)

    文章目录 数字图像处理-DFT&DCT&WHT&小波变换分解重构(Matlab) 基本的matlab图像处理函数的使用 代码块 运行效果 傅里叶变换(DFT) 对图像进行傅里叶 ...

  3. 怎么用matlab分解因式,MATLAB因式分解

    4.1  因式分解 本节介绍线性代数的一些基本操作,包括行列式.逆和秩,LU分解和QR分解,以及范数等.其中LU分解和QR分解都是使用对角线上方或者下方的元素均为0的三角矩阵来进行计算.使用三角矩阵表 ...

  4. matlab expand 扩展 用不了,matlab中expand函数 Matlab 里的expand怎么用

    Matlab 里的expand怎么用 expand函数用于多项式的展开运算, syms x y;%定义x,y变量 expand((x-2)*(x-4)) ans = x^2 - 6*x + 8今天小编 ...

  5. VMD分解,matlab代码,包络线,包络谱,中心频率,峭度值,能量熵,近似熵,包络熵,频谱图,希尔伯特变换,包含所有程序MATLAB代码,-西储大学数据集为例

    目录 1.选取数据 2.VMD函数-matlab代码 3.采用matlab脚本导入数据并做VMD分解 4. VMD分解图 5.计算中心频率 6.画包络线 7. 画包络谱 8. 计算峭度值 9.计算能量 ...

  6. matlab得到计算机时间,Matlab中处理日期与时间的函数

    Matlab用三种格式来表示日期与时间 (1)双精度型日期数字:一个日期型数字代表从公元0年到某一日期的的天数,例如,2008年8月26日夜时0点钟被表示为733646,而这同一天的中午12点就被表示 ...

  7. 正交矩阵,(标准)正交基,正交投影,正交分解定理,最佳逼近定理,格拉姆-施密特方法求正交基(手算+MATLAB),QR分解(手算+MATLAB计算、分析)

    正交(orthogonality).正交集(orthogonal set).单位正交集 定义:如果向量uuu和向量vvv是相互正交的,则有:u⋅v=0u\cdot v=0u⋅v=0. 因为对于零向量, ...

  8. 矩阵的Cholesky分解的Matlab实现

    版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/weixin_38451800/article/details/88933683 1.Cholesky分 ...

  9. VMD分解及其matlab实现方法

    VMD是一种新型的信号分解方法,它基于Hilbert Huang变换(HHT)理论,可以将一个信号分解成多个正交的模态,每个模态都有自己的中心频率和频率带宽.VMD的优点在于,能够克服传统的信号分解方 ...

最新文章

  1. 重温目标检测--SSD
  2. 手把手教你从零上手Python(付安装地址、代码)
  3. Selenium+Java+TestNG环境配置
  4. ueditor1.4.3jsp版成功上传图片后却回显不出来与在线管理显示不出图片的解决方案...
  5. php网站添加cnzz,cnzz代码添加元素到页面
  6. user exits, customer exits, badi
  7. C语言关于符号#和##
  8. [leetcode]347. Top K Frequent Elements
  9. P4145-上帝造题的七分钟2/花神游历各国【并查集,树状数组】
  10. 8分钟回顾开源巨头 Facebook 的 2016
  11. chrome 开启HEVC硬件解码
  12. 支持select下拉框选择输入和键盘输入两种输入方式并且支持手动换行
  13. android 史上最简单behavior,安卓behavior详解1--系统behavior的简单应用
  14. 物联网应用案例选编:中期科技ZONTREE 场馆商超 智慧公厕 智慧厕所 的项目
  15. 自己做一个wox主题
  16. NAB展会BOSMA博冠8K全系8K摄像机产品惊艳亮相
  17. maya渲染帧拷贝删除重命名插件 tjh_copy_same_frame1.1 下载及教程
  18. MathType中/英文版下载地址汇总(适用于Mathtype6.9)
  19. MATLAB画图中图形对象、文字标注、希腊字母显示等
  20. MFC界面控件BCGControlBar v33.3 - 编辑控件功能升级

热门文章

  1. 解决XP系统下HTTP 错误 403.9 - 禁止访问:连接的用户过多的问题
  2. matlab 显示3d频谱_matlab 关于频谱分析程序集锦
  3. c语言智能指针是什么,C ++中的智能指针
  4. 返回值_关于GWLP_WNDPROC的那些奇怪的返回值
  5. python123数字形式转换_python基本数据类型的使用、转换----数字(有待完善)
  6. 智慧农场-专项启动会议
  7. 2021年春季学期-信号与系统-第十三次作业参考答案-第十一小题
  8. 灵动MM32 MCU助力全国大学生智能汽车竞赛
  9. 怎么DIY一个粒子检测器
  10. 用linux集成电路版图设计,集成电路版图设计 [陆学斌 主编] 2012年版