使用matlab如何求卷积,利用MATLAB求解卷积的方法分类
利用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求解卷积的方法分类相关推荐
- matlab里面求线性方程组,利用matlab求线性方程组.doc
利用matlab求线性方程组.doc MATLAB语言课成论文利用MATLAB求线性方程组姓名郭亚兰学号12010245331专业通信工程班级2010级通信工程一班指导老师汤全武学院物电学院完成日期2 ...
- 利用Matlab进行灰色预测,利用matlab进行灰色预测.pdf
利用matlab进行灰色预测,灰色预测matlab程序,灰色预测模型matlab,matlab灰色预测,matlab灰色预测代码,matlab灰色预测工具箱,灰色预测的matlab程序,matlab灰 ...
- matlab ploty,matlab绘制函数 如何利用matlab的ploty
最近有网友提出"matlab绘制函数 如何利用matlab的ploty"等问题,小小知识站提取了各大知名网站有关"matlab绘制函数 如何利用matlab的ploty& ...
- matlab怎么求三次微分,matlab课设三阶微分方程多种方法求解.doc
matlab课设三阶微分方程多种方法求解 目录 一.课程设计题目及意义 -------- 1 页 二.课程设计任务及要求 --------2 页 三.课程设计详细过程及结果 --------3至10页 ...
- matlab或_如何利用MATLAB计算圆周率
圆周率是圆的周长与直径的比值,一般用希腊字母π表示,是一个在数学及物理学中普遍存在的数学常数.π也等于圆形之面积与半径平方之比.是精确计算圆周长.圆面积.球体积等几何形状的关键值. MATLAB中的表 ...
- matlab怎么求标准化特征向量,matlab特征向量标准化
% S1: S2: S3: S4: AHP 的 matlab 程序实现构造比较矩阵 求特征根和特征向量 求得最大特征根的特征向量 做一致性检验 clear; A=[1 1.2 1.5 1.5; % . ...
- matlab 断层 体三维重建,利用MATLAB实现CT断层图像的三维重建
利用MATLAB实现CT断层图像的三维重建 2期 曾 筝等:利用MATLAB实现CT断层图像的三维重建 25 因此,本文介绍了基于MATLAB进行三维表面重建及体重建的方法,实现起来灵活.方便,便于掌 ...
- matlab最小错误率决策,利用MATLAB实现最小错误率贝叶斯判别
利用MATLAB实现最小错误率贝叶斯判别 摘要:matlab软件平台为用户提供了强大的科学计算与可视化功能,具有简单.易用的用户环境,尤其适合矩阵数据的计算处理.根据matlab的特点,将其与模式识别 ...
- matlab 曲线拟合求导,基于matlab曲线拟合的数据预测分析
龙源期刊网 http://www.doczj.com/doc/2f22f716cbaedd3383c4bb4cf7ec4afe05a1b148.html 基于matlab曲线拟合的数据预测分析 作者: ...
- matlab模拟线圈电磁场,利用MATLAB的PDE工具箱对电场和磁场进行模拟
中学物理Vol. 32 No.巧 疑的态度,认为弊大于利,笔者认为这些想法不无道理,只是大家的关注点应该在于如何更好发挥它的优势,而避免它的不足.在实践的过程中笔者有以下心得和体会,与大家分享: 3, ...
最新文章
- 资源 |“从蒙圈到入坑”,推荐新一波ML、DL、RL以及数学基础等干货资源
- python多进程重复加载
- 出口印度海运注意事项
- python下timer定时器常用的两种实现方法
- caffe源码分析:softmax_layer.cpp softmax_loss_layer.cpp
- 2012年我读过的十本好书
- 串口服务器芯片方案商,串口服务器芯片
- 最优化知识笔记整理汇总
- Android微信分享功能实例+demo
- 约瑟夫环c语言程序完整版,约瑟夫环C语言实现源代码(1)
- Linux面试常考(面经总结)
- Struts2 教程 流程
- 蓝桥杯 方格问题 6x6的方格,沿着格子的边线剪开成两部分。 要求这两部分的形状完全相同
- 《人机交互技术》结课作业:界面调研报告交互界面设计快速原型设计(华科软院)
- 【Vitis Accel】2 - Vitis 应用加速开发平台简介
- 数字模拟电路课程设计multisim仿真源文件和设计原理
- 用pyquery5行代码爬取百度热点新闻
- 11年前,放弃高薪回家全职教孩子编程的北大硕士,后来怎么样了……
- python 函数 求 圆的周长及面积;三角形的面积
- 怎么样脱颖而出,成为一个更优秀的人?