MATLAB线性卷积圆周卷积FFT程序
%编制一个计算两个序列线性卷积的通用程序,计算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程序相关推荐
- [Matlab] 线性卷积圆周卷积代码实现
1.线性卷积 周期卷积 圆周卷积的 关系: 2.Matlab实验及现象 圆周卷积: 1 %% 圆周卷积实例程序 2 %% Alimy 2014年11月21日 20:19:12 3 clc; 4 cle ...
- 三种常见的卷积概述(线性卷积周期卷积圆周卷积)
note 2020-07-26搬运 下面的内容来自我的公众号:yhm同学 upd 2020-10-18 推荐学习辅助用书 江志红的<深入浅出数字信号处理> 有别于学院派的教材,这本书讲得比 ...
- matlab圆周卷积计算方法,线性卷积与圆周卷积的计算.doc
线性卷积与圆周卷积的计算,线性卷积和圆周卷积,圆周卷积线性卷积,圆周卷积计算方法,线性卷积计算方法,线性卷积计算,圆周卷积,圆周卷积怎么算,圆周卷积例题,matlab圆周卷积 1.实验目的 通过编程, ...
- 线性卷积、周期卷积、圆周卷积------一篇弄懂
谈到DSP,几个"卷积"总是要弄清楚的.这里我们讨论的是离散时间序列.本篇主要讲解几种"卷积"的定义及运算,定义理解上通俗易懂,例子也能举一反三. 卷积 线性卷 ...
- matlab验证线性卷积与圆周卷积的关系
数字信号处理实验 一.线性卷积和圆周卷积的关系 1.线性卷积 设X1为N1点的有限长序列,X2为N2点的有限长序列(0 < n < N2) 则两序列的线性卷积为: 线性卷积y1(n)的长度 ...
- 序列线性卷积matlab,有限长序列的线性卷积和圆周卷积
原标题:有限长序列的线性卷积和圆周卷积 线性卷积 卷积是两个时间序列之间一种激励和响应得出结果的关系,是可交换.可结合和可分配的.假定一个线性时不变系统的冲激响应为,输入信号通过该系统的输出信号为 对 ...
- 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 ...
- 计算机计算线性卷积规则,线性卷积与圆周卷积的计算(杭电)
线性卷积与圆周卷积的计算(杭电) (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 信号.系统与信号处理实验Ⅱ实验报告实验名称:线性 ...
- matlab圆周卷积计算方法,圆周卷积计算方法例题
编写程序计算两个序列的线性卷积和各点的圆周卷积并打印出来. 思路:线性卷积 自带了我们直接调用即可.对于圆周卷积,我们要先回顾一般 计算圆周卷积的主要流程,即...... 周三晚上 数字信号处理实验报 ...
- 用计算机计算线性卷积的基本规则,实验三_线性卷积与圆周卷积的计算.doc
实验三_线性卷积与圆周卷积的计算 电信类课程试验报告 学 院:基础信息工程系 别:电子信息工程课程名称:数字信号处理姓 名:学 号:日 期:实验三实验名称:线性卷积与圆周卷积的计算一.实验目的 (1) ...
最新文章
- ASP.NET文件上传
- 1-STM32+W5500+GPRS物联网开发基础篇-工控板简介
- java1121123211234321_使用for 语句打印显示下列数字形式:n=4 1 1 2 1 1 2 ,使用for 语句打印显示下列数字形式:n=4...
- h5应用数据加密_邦伲德H5场景个性化开发,打破传统营销局限
- 百度AI加速器三期结业成员企业估值翻2倍 四期启动
- P6222-「P6156 简单题」加强版【莫比乌斯反演】
- (C++)wchar_t 转 string / TCHAR转为char/判断是否进程运行/获得目标进程的入口
- 数据库-使用Command对象进行数据库查询
- linux内核不发(Router Solicit)RS报文问题
- 斐讯k2刷无线打印服务器,斐讯K2全版本刷机教程
- 如何利用window下的Dos命令实现将多个txt合并成一个txt
- 动态链接库dll注册函数DllRegisterServer的调试
- Aspose.Words导出word导出pdf
- K3 ERP 系统财务管理 - 账结法、表结法
- 超多淘宝京东抢购秒杀软,脚本,易语言软,有作者
- matlab中inf是什么意思,simulink中inf什么意思
- 论项目管理中的量化管理
- 第三章 程序的机器级表示
- 3DMax学习笔记【还在更新】
- iOS 应用图标 屏幕尺寸