matlab 数字信号波形图,数字信号处理第三次实验代码及波形图

数字信号处理第三次实验

一、实验目的:

1、掌握离散时间系统的DFT 的MATLAB 实现;

2、熟悉DTFT 和DFT 之间的关系。

3、了解信号不同变形的DFT 与原信号DFT 之间的关系

二、实验内容:

1.开发一个时域圆周移位的matlab 函数cirshift.m 并测试:设x(n)=[9 8 7 6 5 4 3],求x((n-4))8R 8(n)以及x((n+5))8R 8(n)。

function y=cirshift(x,m,N)

%长度为N 的x 序列(时域)作m 点圆周位移

%-------------------------------------

%[y]=cirshift(x,m,N)

%y=包含圆周位移的输出序列

%x=长度

%m=移位样点数

%N=圆周缓冲器长度

%方法:y(n)=x((n-m)mod N)

%check for length of x

if length(x)>N

error('N 必须>=x的长度' )

end

x=[x zeros(1,N-length(x))];%将x 补零到长度为N

n=[0:1:N-1];

n=mod(n-m,N);

y=x(n+1);

%主函数.m

clc;clear all ;

x=[9 8 7 6 5 4 3];

y1=cirshift(x,4,8);

y2=cirshift(x,-5,8);

2. 开发一个圆周翻转的matlab 函数cirflip.m 并测试:设x(n)=[9 8 7 6 5 4 3 2 1],求x(n)的16点圆周翻转x((-n))16R 16(n)。

function y=cirfilp(x,N)

nx=[0:1:N-1];

y=x(mod(-nx,N)+1);

%主函数.m

clc;clear all ;

x=[9 8 7 6 5 4 3 2 1];

N=16;

x=[x zeros(1,N-length(x))];

nx=0:N-1;

y=cirfilp(x,16);

subplot(121),stem([0:N-1],x);title(' 原序列' );

xlabel('n' );ylabel('x(n)');grid;

subplot(122),stem([0:N-1],y);title(' 圆周翻褶序列' );

xlabel('n' );ylabel('x((n))16r16(n)');grid;

3. 开发一个分解圆周奇偶对称序列的matlab 函数cirevod.m 并测试:设x(n)=[9 8 7 6 5 4 3 2 1],将x(n)分解圆周奇偶对称序列x ep (n) 、x op (n)。

function [xep,xop]=circevod(x)

%将实序列分解为圆周偶和圆周奇两部分

%------------------------------------

%[xep,xop]=circevod(x)

if any(imag(x)~=0)

error('x 非实序列' )

end

N=length(x);

n=0:N-1;

xep=0.5*(x+x(mod(-n,N)+1));

xop=0.5*(x-x(mod(-n,N)+1));

%主函数.m

x=[9 8 7 6 5 4 3 2 1];

[xep,xop]=circevod(x);

4. 开发一个实现DFT 矩阵的函数wN=dftmtx(N)并测试N=4,8,16的DFT 矩阵,在此基础上寻求IDFT 矩阵wNI 的编程方法并测试N=4,8,16的IDFT 矩阵

%这是matlab 自带的函数 命令行输入type+dftmtx可查看源代码。

function D = dftmtx(n)

n = signal.internal.sigcasttofloat(n,'double' , 'dftmtx' , 'N' , ... 'allownumeric' );

D = fft(eye(n));

命令行输入:

wN=dftmtx(N);

wNI=conj(dftmtx(N))/N

DFT

N=4

N=8

N=16

IDFT :

N=4

N=8

N=16

5. 自编工具函数XK=dft(xn,N)实现DFT 以及IDFT ,并测试x(n)=[9 8 7 6 5 4 3 2 1]的DFT 。

function [Xk]=dft(xn,N)

n=[0:1:N-1];

k=n;

WN=exp(-j*2*pi/N);

nk=n'*k;

WNnk=WN.^(nk);

Xk=xn*WNnk;

%主函数

xn=[9 8 7 6 5 4 3 2 1]

y=dft(x,9);

function [Xk]=idft(xn,N)

n=[0:1:N-1];

k=n;

WN=exp(-j*2*pi/N);

nk=n'*k;

WNnk=WN.^(-nk);

Xk=(xn*WNnk)/N;

6. 开发一个圆周卷积计算的matlab 函数y=circonvt(x1,x2,N),并测试x1(n)=[1 2 3 4 9], x2=[7 6 5 4 3 2 1],求8点圆周卷积。

function y=circonvt(x1,x2,N)

if length(x1)>N

error('N 必须>=x1的长度' ) end

if length(x2)>N

error('N 必须>=x2的长度' ) end

x1=[x1 zeros(1,N-length(x1))]; x2=[x2 zeros(1,N-length(x2))]; m=[0:1:N-1]; x2=x2(mod(-m,N)+1); H=zeros(N,N);

for n=1:1:N

H(n,:)=cirshift(x2,n-1,N); end

y=x1*H';

%test.6

x1=[1 2 3 4 9];

x2=[7 6 5 4 3 2 1];

y=circonvt(x1,x2,8);

7. 教材P212 习题3.36.

余弦频率是正弦频率的两倍,故正弦周期是预先周期的两倍。T=0.5s 抽样间隔T=0.01s,故N=50;

clear all ;clc;

N=50;

n=[0:1:N-1];

k=n;

xn=2*sin(0.04*pi*n)+5*cos(0.08*pi*n);

WN=exp(-j*2*pi/N);

nk=n'*k;

WNnk=WN.^(nk);

Xk=xn*WNnk;

magX=abs(Xk);

angX=angle(Xk);

subplot(121);stem(k,magX,'.' );grid;

xlabel('k' );title(' 幅度谱曲线' );ylabel('X(k)');

subplot(122);stem(k,angX,'.' );grid;

xlabel('k' );title(' 相位谱曲线' );ylabel(' 弧度' );

因为抽样频率不变,要增大N 才能减少谱泄露,故N=99; clear all ;clc;

N=99;

n=[0:1:N-1];

k=n;

xn=2*sin(0.04*pi*n)+5*cos(0.08*pi*n); WN=exp(-j*2*pi/N);

nk=n'*k;

WNnk=WN.^(nk);

Xk=xn*WNnk;

magX=abs(Xk);

angX=angle(Xk);

subplot(121);stem(k,magX,'.' );grid;

xlabel('k' );title(' 幅度谱曲线' );ylabel('X(k)'); subplot(122);stem(k,angX,'.' );grid;

xlabel('k' );title(' 相位谱曲线' );ylabel(' 弧度' );

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
matlab 数字信号处理函数 matlab实现数字信号处理的一些经典理论 内涵: 滤波器的设计,模拟与数字 采样定律 Z变换与s域映射 卷积原因 截断效应 各种变换 如:DFS DFT IDFT 具体的如下: % 离散信号和系统 % conv_m - 改进的线性卷积子程序 (第22页) % conv_tp - 用Toeplitz矩阵计算的线性卷积(第34页) % evenodd - 将实信号分解为偶和奇两部分(第15页) % impseq - 产生脉冲序列 (第6页) % sigadd - 信号相加运算(第8页) % sigfold - 信号折叠运算(第10页) % sigmult - 信号乘法运算(第9页) % sigshift - 信号时移运算(第9页) % stepseq - 产生阶跃序列(第6页) % 离散时间付利叶变换(第 z变换) % pfe2rfz - 在z域由部分分式展开为有理函数(第四章) % rf2pfez - 在z域由有理函数展开为部分分式(第四章) % 离散付利叶变换 % circevod - 实信号分解为循环偶分量和循环奇分量(第132页) % circonvt - 时域中的循环卷积(第139页) % cirshftt - 时域中的循环移位(第146页) % dfs - 计算离散付利叶系数(第109页) % dft - 计算离散付利叶变换(第120页) % hsolpsav - 采用FFT 高速分段卷积的重叠保留法(第157页) % idfs - 计算逆离散付利叶级数(第110页) % idft - 计算逆离散付利叶变换(第121页) % mod - 计算 m = n mod N (第119页) % ovrlpsav - 分段卷积的重叠保留法 (第147页) % 数字滤波器结构 % cas2dir - 级联到直接的形式转换(第173页) % casfiltr - IIR 和 FIR 滤波器的级联实现(第172页) % cplxcomp - 比较两个复数对(第176页) % dir2cas - 直接到级联的型式转换(第171页) % dir2fs - 直接形式到频率采样型的转换(第187页) % dir2ladr - IIR 直接形式极__零点到格型/梯形的转换(第199页) % dir2latc - FIR 直接形式到全零点格型形式的转换(第193页) % dir2par - 直接到并联形式的转换(第175页) % dir2paro - 直接到并联形式的转换(用于旧版信号处理工具箱) % ladr2dir - 格型/梯形形式到IIR 直接形式的转换(第199页) % ladrfilt - 格型/梯形形式的IIR 滤波器实现(第200页) % latc2dir - 全零点格型形式到FIR 直接形式的转换(第194页) % latcfilt - FIR 滤波器的格型形式的实现(第194页) % par2dir - 并联形式到直接形式的转换(第177页) % parfiltr - IIR 滤波器的并联形式的实现(第177页) % FIR 滤波器设计 % ampl_res -由FIR滤波器脉冲响应求其幅频特性(第271页 ) % blackman - 布莱克曼窗函数(第230页) % freqz_m - 改进型的freqz 子程序(第233页) % Hr_Type1 - 计算1型FIR低通滤波器(第215页) % Hr_Type2 - 计算2型FIR低通滤波器(第216页) % Hr_Type3 - 计算3型FIR低通滤波器(第216页) % Hr_Type4 - 计算4型FIR低通滤波器(第216页) % ideal_lp - 理想低通滤波器脉冲响应计算 (第232页) % IIR 滤波器设计 % afd_butt - 模拟低通巴特沃思滤波器设计(第286页) % afd_chb1 - 模拟低通切比雪夫Ⅰ型滤波器设计(第292页) % afd_chb2 - 模拟低通切比雪夫Ⅱ型滤波器设计(第295页) % afd_elip - 模拟椭圆低通滤波器设计(第299页) % cheb1hpf - 用切比雪夫Ⅰ型原型作 IIR 高通滤波器设计(第330页) % freqs_m - 改进型的freqs 子程序(第286页) % imp_invr - 由模拟到数字滤波器的脉冲响应不变变换(第303页) % sdir2cas - s平面的直接形式到级联形式的变换(第282页) % u_buttap - 未归一化的巴特沃思模拟低通滤波器原型(第282页) % u_chb1ap - 未归一化的切比雪夫Ⅰ型模拟低通滤波器原型(第290页) % u_chb2ap - 未归一化的切比雪夫Ⅱ型模拟低通滤波器原型(第294页) % u_elipap - 未归一化的椭圆模拟低通滤波器原型(第298页) % zmapping - z域中的频带变换(第326页) % 自适应滤波 % lms - 系数调整的LMS 算法(第347页) % 数字通信 % mulaw_c -μ规则压缩器(式(10.5)) % mulaw_e - μ规则扩张器(式(10.7)) % quantize - 将信号量化为b 位(图 10.2) % 杂项 % contents - 内容文件(你正在读的) % db2delta - 由相对的 dB 数转换为绝对的 delta 数.(第七章) % delta2db - 由绝对的 delta 数转换为相对的 dB 数(第七章) % pzplotz - 按正方坐标画出z平面上的单位圆及零极点分布图(第三章) % sinc - sinc(x)=sin(pi*x)/(pi*x)(第三章)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值