利用MATLAB 求解卷积的方法分类 求法一:

求有序列A (n )=1 n=3,4,5,6,7,8,9,,10,11,1,2.B(n)=1 n=2,3,4,5,6,7,8,9,. 代码:

n1=3;n2=12;

>> m1=2;m2=9;

>> a=ones(1,(n2-n1+1));

>> b=ones(1,(m2-m1+1));

>> c=conv(a,b);

>> nc1=n1+m1;nc2+m2+n2;

nc1=n1+m1;nc2=m2+n2;

>> kc=nc1:nc2;

>> kc,c

stem(kc,c),text(18,6,'非平凡法')

>> CC=[zeros(1,kc(1)),c];

kc=0:(n2+m2);

>> stem(kc,CC),text(18,6,'非平凡法')

求法二:

N1=3;N2=12;

a=ones(1,N2+1);a(1:N1)=0;

M1=2;M2=9;

b=ones(1,M2+1);b(1:M1)=0;

c=conv(a,b);

kc=0:(N2+M2);

kc,c

subplot(2,1,1),stem(kc,c),text(20,6,'0 起点法')

求法三:

求有限序列与无限序列的卷积

clear

>> M=4;

>> h=[0.1,0.35,-0.42,-0.05,0.15];

>> N=10000;

>>rng default %恢复matlab 启动时默认的全局随机流。

>> u=randsrc(1,N);

>>tic

>> y_filter=filter(h,1,u);

>> t_filter=toc;

>> tic

>> ct=[u(1),zeros(1,M)];

>> ut=toeplitz(ct,u);

>> y_toe=h*ut;

>> t_toe=toc;

>> %卷积指令法

>> tic

>> y_conv=conv(h,u);

>> t_conv=toc;

>> y_conv(N+1:end)=[];

filter 是一维数字滤波器

使用方法:

Y = filter(B,A,X) ,输入X 为滤波前序列,Y 为滤波结果序列,B/A 提供滤波器系数,B 为分子, A 为分母

整个滤波过程是通过下面差分方程实现的:

a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb) - a(2)*y(n-1) - ... - a(na+1)*y(n-na)

[Y,Zf] = filter(B,A,X,Zi),输入X 为滤波前序列,Y 为滤波结果序列,B/A 提供滤波器系数,B 为分子, A 为分母,

在MATLAB 中,可以用函数y=filter(p,d,x)实现差分方程的仿真,也可以用函数 y=conv(x,h)计算卷积,用y=impz(p,d,N)求系统的冲激响应。

实现差分方程

先从简单的说起:

filter([1,2],1,[1,2,3,4,5])

实现 y[k]=x[k]+2*x[k-1]

y[1]=x[1]+2*0=1%(x[1]之前状态都用0)

y[2]=x[2]+2*x[1]=2+2*1=4

a. 下面程序是用来实现h 和x 的卷积得,分别用了filter 和conv 函数,两者函数得出的结果一样。

h = [3 2 1 -2 1 0 -4 0 3]; % impulse response

x = [1 -2 3 -4 3 2 1]; % input sequence

y = conv(h,x);

n = 0:14;

subplot(2,1,1);

stem(n,y);

xlabel('Time index n'); ylabel('Amplitude');

title('Output Obtained by Convolution'); grid;

x1 = [x zeros(1,8)];

y1 = filter(h,1,x1);

subplot(2,1,2);

stem(n,y1);

xlabel('Time index n'); ylabel('Amplitude');

title('Output Generated by Filtering'); grid;

要实现下式的冲击响应和阶跃响应,可以分别采用三种方法。

y[n]+0.75y[n-1]+0.125y[n-2]=x[n]-x[n-1]。

b. 单位冲激响应:

(1)用filter 函数

a1=[1,0.75,0.125];

b1=[1,-1];

n=0:20;

x1=[1 zeros(1,20)];

y1filter=filter(b1,a1,x1);

stem(n,y1filter);

title('y1filter');

xlabel('x');

ylabel('y');

(2)用conv 函数

a1=[1,0.75,0.125];

b1=[1,-1];

x1=[1 zeros(1,10)];

[h]=impz(b1,a1,10);

y1conv=conv(h,x1);

n=0:19;

stem(n,y1conv,'filled')

(3)用impz 函数

a1=[1,0.75,0.125];

b1=[1,-1];

impz(b1,a1,21);

c. 单位阶跃响应:

(1)用filter 函数

a1=[1,0.75,0.125];

b1=[1,-1];

n=0:20;

x2=ones(1,21);

y1filter=filter(b1,a1,x2);

stem(n,y1filter);

title('y1filter_step');

xlabel('x');

ylabel('y');

(2)用conv 函数

a1=[1,0.75,0.125];

b1=[1,-1];

x2=ones(1,21);

[h]=impz(b1,a1,20);

y1=conv(h,x2);

y1conv=y1(1:21); %为何y1conv 要取y1中1:21的值,解释见

n1=0:20; %y2à单位阶跃响应à用conv 函数中注释

stem(n1,y1conv,'filled');

title('y1conv');

xlabel('n');

ylabel('y1[n]');

(3)用impz 函数

a=[1,0.75,0.125];

b=1;

impz(b,a)

即y=filter(p,d,x)用来实现差分方程,d 表示差分方程输出y 的系数,p 表示输入x 的系数,而x 表示输入序列。输出结果长度数等于x 的长度。

而y=conv(x,h)是用来实现卷级的,对x 序列和h 序列进行卷积,输出的结果个数等于x 的长度与h 的长度之和减去1。

y=impz(p,d,N)是用来实现冲击响应的,d 和p 的定义见filter ,N 表示冲击响应输出的序列个数。

使用matlab如何求卷积,利用MATLAB求解卷积的方法分类相关推荐

  1. matlab里面求线性方程组,利用matlab求线性方程组.doc

    利用matlab求线性方程组.doc MATLAB语言课成论文利用MATLAB求线性方程组姓名郭亚兰学号12010245331专业通信工程班级2010级通信工程一班指导老师汤全武学院物电学院完成日期2 ...

  2. 利用Matlab进行灰色预测,利用matlab进行灰色预测.pdf

    利用matlab进行灰色预测,灰色预测matlab程序,灰色预测模型matlab,matlab灰色预测,matlab灰色预测代码,matlab灰色预测工具箱,灰色预测的matlab程序,matlab灰 ...

  3. matlab ploty,matlab绘制函数 如何利用matlab的ploty

    最近有网友提出"matlab绘制函数 如何利用matlab的ploty"等问题,小小知识站提取了各大知名网站有关"matlab绘制函数 如何利用matlab的ploty& ...

  4. matlab怎么求三次微分,matlab课设三阶微分方程多种方法求解.doc

    matlab课设三阶微分方程多种方法求解 目录 一.课程设计题目及意义 -------- 1 页 二.课程设计任务及要求 --------2 页 三.课程设计详细过程及结果 --------3至10页 ...

  5. matlab或_如何利用MATLAB计算圆周率

    圆周率是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数.π也等于圆形之面积与半径平方之比.是精确计算圆周长.圆面积.球体积等几何形状的关键值. MATLAB中的表 ...

  6. matlab怎么求标准化特征向量,matlab特征向量标准化

    % S1: S2: S3: S4: AHP 的 matlab 程序实现构造比较矩阵 求特征根和特征向量 求得最大特征根的特征向量 做一致性检验 clear; A=[1 1.2 1.5 1.5; % . ...

  7. matlab 断层 体三维重建,利用MATLAB实现CT断层图像的三维重建

    利用MATLAB实现CT断层图像的三维重建 2期 曾 筝等:利用MATLAB实现CT断层图像的三维重建 25 因此,本文介绍了基于MATLAB进行三维表面重建及体重建的方法,实现起来灵活.方便,便于掌 ...

  8. matlab最小错误率决策,利用MATLAB实现最小错误率贝叶斯判别

    利用MATLAB实现最小错误率贝叶斯判别 摘要:matlab软件平台为用户提供了强大的科学计算与可视化功能,具有简单.易用的用户环境,尤其适合矩阵数据的计算处理.根据matlab的特点,将其与模式识别 ...

  9. matlab 曲线拟合求导,基于matlab曲线拟合的数据预测分析

    龙源期刊网 http://www.doczj.com/doc/2f22f716cbaedd3383c4bb4cf7ec4afe05a1b148.html 基于matlab曲线拟合的数据预测分析 作者: ...

  10. matlab模拟线圈电磁场,利用MATLAB的PDE工具箱对电场和磁场进行模拟

    中学物理Vol. 32 No.巧 疑的态度,认为弊大于利,笔者认为这些想法不无道理,只是大家的关注点应该在于如何更好发挥它的优势,而避免它的不足.在实践的过程中笔者有以下心得和体会,与大家分享: 3, ...

最新文章

  1. 资源 |“从蒙圈到入坑”,推荐新一波ML、DL、RL以及数学基础等干货资源
  2. python多进程重复加载
  3. 出口印度海运注意事项
  4. python下timer定时器常用的两种实现方法
  5. caffe源码分析:softmax_layer.cpp softmax_loss_layer.cpp
  6. 2012年我读过的十本好书
  7. 串口服务器芯片方案商,串口服务器芯片
  8. 最优化知识笔记整理汇总
  9. Android微信分享功能实例+demo
  10. 约瑟夫环c语言程序完整版,约瑟夫环C语言实现源代码(1)
  11. Linux面试常考(面经总结)
  12. Struts2 教程 流程
  13. 蓝桥杯 方格问题 6x6的方格,沿着格子的边线剪开成两部分。 要求这两部分的形状完全相同
  14. 《人机交互技术》结课作业:界面调研报告交互界面设计快速原型设计(华科软院)
  15. 【Vitis Accel】2 - Vitis 应用加速开发平台简介
  16. 数字模拟电路课程设计multisim仿真源文件和设计原理
  17. 用pyquery5行代码爬取百度热点新闻
  18. 11年前,放弃高薪回家全职教孩子编程的北大硕士,后来怎么样了……
  19. python 函数 求 圆的周长及面积;三角形的面积
  20. 怎么样脱颖而出,成为一个更优秀的人?

热门文章

  1. 基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习
  2. 计算机考试一级b软件未来教育,2019.9全国计算机一级MS Office考试每日一练
  3. 《HTTP权威指南》读书笔记---说明
  4. linux 类似迅雷下载软件,推荐几个可以替代迅雷的下载软件
  5. Fortran入门教程(十)——结构体
  6. 推荐 一个PDF转Word内容不匹配、乱码的解决方法
  7. 从本机复制文件到VM虚拟机出现卡死
  8. 材料界的魔术师:值得关注的10家超材料创业公司
  9. IDEA下载主题、修改主题、删除主题
  10. SQL岗位30个面试题,SQL面试问题及答案