%编制一个计算两个序列线性卷积的通用程序,计算x(n)*h(n)
%编制一个计算循环卷积的通用程序,计算 4 种情况下两个序列的循环卷积
%用到的函数:circonv.m  cirshiftd.m

%% 两个序列
clear all;
close all;X=[1 2 3 4 5];  %生成 x(n)
h=[1 2 1 2];  %生成 h(n)%% 用函数 conv 计算线性卷积
y1=conv(X,h);
ny1=[0:1:length(y1)-1];
N=5;   %X长度
M=4;   %h长度
L=M+N-1;   %卷积长度
nx=0:N-1;
nh=0:M-1;
ny=0:L-1;   %横轴长度%% 用函数 circonv 计算线性卷积
N0=5;   %卷积点数
N1=6;
N2=9;
N3=10;y2=circonv(X,h,N0);  %用函数 circonv 计算 N0 点循环卷积
ny2=[0:1:length(y2)-1];
y3=circonv(X,h,N1);  %用函数 circonv 计算 N1 点循环卷积
ny3=[0:1:length(y3)-1];
y4=circonv(X,h,N2);  %用函数 circonv 计算 N1 点循环卷积
ny4=[0:1:length(y4)-1];
y5=circonv(X,h,N3);  %用函数 circonv 计算 N1 点循环卷积
ny5=[0:1:length(y5)-1];%% 图像表示
%x(n)图像
subplot(2,4,1);
stem(nx,X,'.k');%X的冲激用黑色表示
xlabel('n');
ylabel('x(n)');
grid on; %打开网格%h(n)图像
subplot(2,4,2);
stem(nh,h,'.k');
xlabel('n');
ylabel('h(n)');
grid on;%线性卷积
subplot(2,4,3);
stem(ny,y1,'.k');
xlabel('n');
ylabel('y1(n)');
grid on;%圆周卷积
subplot(2,4,5);
stem(ny2,y2,'.k');
xlabel('n');
ylabel('y2(n)');
grid on;subplot(2,4,6);
stem(ny3,y3,'.k');
xlabel('n');
ylabel('y3(n)');
grid on;subplot(2,4,7);
stem(ny4,y4,'.k');
xlabel('n');
ylabel('y4(n)');
grid on;subplot(2,4,8);
stem(ny5,y5,'.k');
xlabel('n');
ylabel('y5(n)');
grid on;

%直接计算圆周卷积y=circonv(x1,x2,N)

function yc=circonv(x1,x2,N)
%y:output sequences
%x1,x2:input sequences
%N:circulation lengthif length(x1)>N
error( 'N must not be less than length of x1 ');
end
if length(x2)>N
error( 'N must not be less than length of x2 ');
end
%以上语句判断两个序列的长度是否小于 N
x1=[x1,zeros(1,N-length(x1))];
%填充序列x1(n)使其长度为N1+N2-1(序列%h(n)的长度为 N1,序列 x(n)的长度为 N2)
x2=[x2,zeros(1,N-length(x2))];
%填充序列 x2(n)使其长度为 N1+N2-1
n=[0:1:N-1];
x2=x2(mod(-n,N)+1);  %取模 生成序列x2((-n))N
H=zeros(N,N);
for n=1:1:NH(n,:)=cirshiftd(x2,n-1,N);  %该矩阵的k行为x2((k-1-n))N
end
yc=x1*H'; %矩阵的方法计算循环卷积

%形成矩阵

function y=cirshiftd(x,m,N)
%直接实现序列x的循环移位
%y=cirshiftd(x,m,N);
%x:长度小于N的输入序列
%m:转移多少
%N:圆形长度
%y:输出移位序列
if length(x)>N
error('length of x must be less than N');
end
x=[x,zeros(1,N-length(x))];
n=[0:1:N-1];
y=x(mod(n-m,N)+1);

结果

%FFT实现快速卷积
%用到的函数 f_FFT.m

%% 主程序
clear all;
close all;
N1=[0:1:15];  %N1=16
N2=[0:1:16];  %N2=17
xn1=ones(1,16);
xn2=cos(2*N1*pi/16);
xn3=(1/3).^N1;
hn=(1/2).^N2;y1=f_FFT(xn1,hn);
y2=f_FFT(xn2,hn);
y3=f_FFT(xn3,hn);

%函数

function y = f_FFT(xn,hn)
N1=length(xn);
N2=length(hn);
N=N1+N2-1;
XK=fft(xn,N);  %离散傅立叶变换快速算法
HK=fft(hn,N);
YK=XK.*HK;
y=ifft(YK,N);  %离散傅立叶反变换快速算法
if all (imag(xn)==0)&(all(imag(hn)==0))%实序列的循环卷积仍然为实序列
y=real(y);  %复数的实部
x=0:N-1;
figure;
stem(x,y,'.k');
end

结果

MATLAB线性卷积圆周卷积FFT程序相关推荐

  1. [Matlab] 线性卷积圆周卷积代码实现

    1.线性卷积 周期卷积 圆周卷积的 关系: 2.Matlab实验及现象 圆周卷积: 1 %% 圆周卷积实例程序 2 %% Alimy 2014年11月21日 20:19:12 3 clc; 4 cle ...

  2. 三种常见的卷积概述(线性卷积周期卷积圆周卷积)

    note 2020-07-26搬运 下面的内容来自我的公众号:yhm同学 upd 2020-10-18 推荐学习辅助用书 江志红的<深入浅出数字信号处理> 有别于学院派的教材,这本书讲得比 ...

  3. matlab圆周卷积计算方法,线性卷积与圆周卷积的计算.doc

    线性卷积与圆周卷积的计算,线性卷积和圆周卷积,圆周卷积线性卷积,圆周卷积计算方法,线性卷积计算方法,线性卷积计算,圆周卷积,圆周卷积怎么算,圆周卷积例题,matlab圆周卷积 1.实验目的 通过编程, ...

  4. 线性卷积、周期卷积、圆周卷积------一篇弄懂

    谈到DSP,几个"卷积"总是要弄清楚的.这里我们讨论的是离散时间序列.本篇主要讲解几种"卷积"的定义及运算,定义理解上通俗易懂,例子也能举一反三. 卷积 线性卷 ...

  5. matlab验证线性卷积与圆周卷积的关系

    数字信号处理实验 一.线性卷积和圆周卷积的关系 1.线性卷积 设X1为N1点的有限长序列,X2为N2点的有限长序列(0 < n < N2) 则两序列的线性卷积为: 线性卷积y1(n)的长度 ...

  6. 序列线性卷积matlab,有限长序列的线性卷积和圆周卷积

    原标题:有限长序列的线性卷积和圆周卷积 线性卷积 卷积是两个时间序列之间一种激励和响应得出结果的关系,是可交换.可结合和可分配的.假定一个线性时不变系统的冲激响应为,输入信号通过该系统的输出信号为 对 ...

  7. matlab实现DFT、线性卷积、圆周卷积运算

    求序列的N点DFT %计算矩形序列的4.8.16点DFT N1=4;N2=8;N3=16; k1=0:N1-1; k2=0:N2-1; k3=0:N3-1; n=0:N1-1; w=2*pi*(0:2 ...

  8. 计算机计算线性卷积规则,线性卷积与圆周卷积的计算(杭电)

    线性卷积与圆周卷积的计算(杭电) (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 信号.系统与信号处理实验Ⅱ实验报告实验名称:线性 ...

  9. matlab圆周卷积计算方法,圆周卷积计算方法例题

    编写程序计算两个序列的线性卷积和各点的圆周卷积并打印出来. 思路:线性卷积 自带了我们直接调用即可.对于圆周卷积,我们要先回顾一般 计算圆周卷积的主要流程,即...... 周三晚上 数字信号处理实验报 ...

  10. 用计算机计算线性卷积的基本规则,实验三_线性卷积与圆周卷积的计算.doc

    实验三_线性卷积与圆周卷积的计算 电信类课程试验报告 学 院:基础信息工程系 别:电子信息工程课程名称:数字信号处理姓 名:学 号:日 期:实验三实验名称:线性卷积与圆周卷积的计算一.实验目的 (1) ...

最新文章

  1. ASP.NET文件上传
  2. 1-STM32+W5500+GPRS物联网开发基础篇-工控板简介
  3. java1121123211234321_使用for 语句打印显示下列数字形式:n=4 1 1 2 1 1 2 ,使用for 语句打印显示下列数字形式:n=4...
  4. h5应用数据加密_邦伲德H5场景个性化开发,打破传统营销局限
  5. 百度AI加速器三期结业成员企业估值翻2倍 四期启动
  6. P6222-「P6156 简单题」加强版【莫比乌斯反演】
  7. (C++)wchar_t 转 string / TCHAR转为char/判断是否进程运行/获得目标进程的入口
  8. 数据库-使用Command对象进行数据库查询
  9. linux内核不发(Router Solicit)RS报文问题
  10. 斐讯k2刷无线打印服务器,斐讯K2全版本刷机教程
  11. 如何利用window下的Dos命令实现将多个txt合并成一个txt
  12. 动态链接库dll注册函数DllRegisterServer的调试
  13. Aspose.Words导出word导出pdf
  14. K3 ERP 系统财务管理 - 账结法、表结法
  15. 超多淘宝京东抢购秒杀软,脚本,易语言软,有作者
  16. matlab中inf是什么意思,simulink中inf什么意思
  17. 论项目管理中的量化管理
  18. 第三章 程序的机器级表示
  19. 3DMax学习笔记【还在更新】
  20. iOS 应用图标 屏幕尺寸

热门文章

  1. Rog14 Win10系统迁移新的三星固态硬盘
  2. 【爬虫专栏11】正则,ajax,json爬马蜂窝
  3. 个税抵扣全指南精华版!
  4. C++ 的万能头文件,你知道多少?
  5. 70 行 Python 代码写春联,行书隶书楷书随你选
  6. Spring 菜鸟教程 异常 集锦
  7. 【TransE模型】基于分布式表示推理
  8. 台式电脑开机一直卡在正在启动windows怎么办
  9. 产品需求文档(PRD,Product Requirement Document)模板
  10. 职场达人教你怎么删除pdf空白页