Matlab数字信号处理——综合实验报告
Matlab数字信号处理实验报告
Matlab数字信号处理实验报告本次实验使用MATLAB进行数字信号处理操作,目的是熟悉MATLAB中数字信号处理的相关工具箱,并进一步理解数字信号处理的基本概念和算法。
一、实验内容1.信号的生成与显示2.时域分析和频域分析3.滤波器设计4.数字滤波器性能分析二、实验步骤在MATLAB中,使用sawtooth函数生成一个锯齿波信号,并使用plot函数进行时域波形的显示。
代码如下:f = 1000;fs = 40000;t = 0:1/fs:0.01;y = sawtooth(2*pi*f*t);plot(t,y);xlabel('Time (s)');ylabel('Amplitude');title('Sawtooth Wave');时域分析包括波形的观察和参数分析,如幅值、均值、方差等。
频域分析则是对信号进行傅里叶变换,得到其频谱图,包括频率分布和强度分布。
%时域分析amp = max(y)-min(y);mean_y = mean(y);var_y = var(y);设计一个低通滤波器,将高于1kHz的频率成分滤掉。
对滤波后的信号进行时域分析和频域分析,比较滤波前后信号的特征参数和频谱特征,并绘制原始信号、滤波后信号及其频谱图。
subplot(2,2,1);plot(t,y);xlabel('Time (s)');ylabel('Amplitude');title('Sawtooth Wave');subplot(2,2,2);plot(t,y_filt);xlabel('Time (s)');ylabel('Amplitude');title('Sawtooth Wave After Filter');subplot(2,2,3:4);plot(f2,fft_y_filt,'r',f,fft_y,'g');xlabel('Frequency (Hz)');ylabel('Amplitude');title('Sawtooth Wave Spectrum Comparison');legend('After Filter','Before Filter');三、实验结果与分析通过生成并显示一段锯齿波信号,并对其进行时域和频域分析,可以得到该信号的关键信息,如幅值、均值、方差和频率分布特性。
matlab数字信号处理实验
以 代替上式中的Z,就可以得到序列x(n)的傅里叶变换
X( )= (1-8)
式(1—6)和式(1—8)具有如下关系:
=X( )︱ (1-9)
由式(1—9)可知,在分析一个连续时间信号的频谱时,可以通过取样将有关的计算转换为序列傅里叶变换的计算。
(二)有限长序列分析
一般来说,在计算机上不可能,也不必要处理连续的曲线X(e ),通常,我们只观察、分析X(e )在某些频率点上的值。对于长度为N的有限长序列
(1-5)
作为拉氏变换的一种特例,信号理想采样的傅里叶变换
(1-6)
由式(1—5)和式(1—6)可知,信号理想采样后的频谱是原信号频谱的周期延拓,其延拓周期等于采样频率,根据Shannon取样定理,如果原信号是带限信号,且采样频率高于原信号的最高频率分量2倍,则采样以后不会发生频谱混迭现象。
在计算机处理时,不采用式(1—6)计算信号的频谱,而是利用序列的傅里叶变换计算信号的频谱,可以得到序列x(n)的Z变换为:
信号产生子程序:
1、理想采样信号序列xa(n)
n=0:50;
A=444.128;
a=50*sqrt(2.0)*pi;
T=1/1000;
w0=50*sqrt(2.0)*pi;
x=A*exp(-a*n*T).*sin(w0*n*T);
close all
subplot(3,1,1);
stem(x);
title('通信学号理想采样信号序列xa(n)');
贴出最后得到的图形
四:思考:系统最高频率是多少?第一个实验中有无频谱混迭,为什么?第二个实验中有无频谱混迭,为什么?
X=x*(exp(-j*pi/12.5)).^(n'*k);
MATLAB实验报告模板
MATLAB实验报告模板实验题目:使用MATLAB进行数字信号处理实验目的:1. 学习MATLAB的基本操作和数字信号处理中常用的函数。
2. 掌握数字信号的离散化、采样、量化等处理方法。
3. 实现数字滤波器的设计和应用。
实验内容:1. 生成并绘制一个正弦波信号,包括频率、幅度和相位等参数。
2. 对信号进行采样,并绘制采样后的离散信号图像。
3. 对采样后的信号进行量化,并绘制量化后的信号图像。
4. 设计一个数字滤波器,并将滤波前后的信号图像进行对比。
实验步骤:1. 生成一个正弦波信号:```matlab% 信号频率为3Hz,幅度为2,相位为0t = 0:0.01:1;f = 3;A = 2;theta = 0;x = A * sin(2*pi*f*t + theta);```2. 绘制信号图像:```matlabplot(t, x);xlabel('时间');ylabel('幅度');title('正弦波信号');```3. 进行信号的采样:```matlab% 采样频率为20Hzfs = 20;Ts = 1/fs;n = 0:Ts:1;xs = A * sin(2*pi*f*n + theta);```4. 绘制采样信号图像:```matlabstem(n, xs);xlabel('时间');ylabel('幅度');title('采样信号');```5. 进行信号的量化:```matlab% 将信号量化为8位bits = 8;delta = (2 * A) / (2^bits);xq = floor(xs / delta + 0.5) * delta;```6. 绘制量化信号图像:```matlabstem(n, xq);xlabel('时间');ylabel('幅度');title('量化信号');```7. 设计数字滤波器:```matlab% 采用FIR滤波器,截止频率为4Hz fcut = 4;n = 100; % 滤波器阶数b = fir1(n, 2*fcut/fs);y = filter(b, 1, xq);```8. 绘制滤波前后的信号图像:```matlabfigure;subplot(2,1,1);stem(n, xq);xlabel('时间');ylabel('幅度');title('量化信号');subplot(2,1,2);stem(n, y);xlabel('时间');ylabel('幅度');title('滤波信号');```实验结果和分析:根据以上实验步骤,可以得到正弦波信号、采样信号、量化信号和滤波信号等图像。
matlab dsp实验报告
MATLAB DSP实验报告介绍本实验报告将详细介绍在MATLAB环境下进行数字信号处理(DSP)的实验步骤和相关方法。
我们将通过逐步思考的方式,帮助读者理解和学习DSP的基本概念和技术。
实验环境和工具在进行DSP实验之前,我们需要准备以下环境和工具:1.MATLAB软件:确保已安装并配置好MATLAB软件,可以在MATLAB Command窗口中输入命令。
2.信号处理工具包:在MATLAB中,我们可以使用信号处理工具箱(Signal Processing Toolbox)来进行DSP实验和分析。
确保该工具箱已被安装并加载。
实验步骤下面是进行DSP实验的一般步骤:步骤一:加载信号首先,我们需要加载待处理的信号。
这可以通过在MATLAB中使用load命令加载一个音频文件或生成一个模拟信号实现。
例如,我们可以加载一个名为signal.wav的音频文件:load signal.wav步骤二:信号预处理在进行DSP之前,通常需要对信号进行预处理。
这可能包括去噪、滤波、均衡等操作。
例如,我们可以使用滤波器对信号进行降噪:filtered_signal = filter(filter_coefficients, signal);步骤三:信号分析一旦信号经过预处理,我们可以开始进行信号分析。
这可能涉及频域分析、时域分析、谱分析等。
例如,我们可以通过计算信号的快速傅里叶变换(FFT)获得其频谱:spectrum = fft(filtered_signal);步骤四:特征提取在信号分析之后,我们可以根据需要提取信号的特征。
这些特征可能包括幅度、频率、相位等。
例如,我们可以计算信号的能量:energy = sum(abs(filtered_signal).^2);步骤五:信号重构在完成信号分析和特征提取后,我们可以根据需要对信号进行重构。
这可能包括滤波、修复损坏的信号等。
例如,我们可以使用滤波器对信号进行重构:reconstructed_signal = filter(filter_coefficients, filtered_signal);步骤六:结果评估最后,我们需要评估重构后的信号和原始信号之间的差异。
Matlab数字信号处理实验报告
数字信号处理实验报告基础实验篇实验一离散时间系统及离散卷积一、实验原理利用Matlab软件计算出系统函数的零极点分布、单位脉冲响应和系统频率响应等的图像并于笔算结果进行比较,找出异同。
编译合适程序能计算取值范围不同的离散卷积。
二、实验目的(1)熟悉MATLAB软件的使用方法。
(2)熟悉系统函数的零极点分布、单位脉冲响应和系统频率响应等概念。
(3)利用MATLAB绘制系统函数的零极点分布图、系统频率响应和单位脉冲响应。
三、实验步骤(1)自编并调试实验程序,并且,给实验程序加注释;(2)按照实验内容完成笔算结果;(3)验证计算程序的正确性,记录实验结果。
(4)至少要求一个除参考实例以外的实验结果,在实验报告中,要描述清楚实验结果对应的系统,并对实验结果进行解释说明。
四、实验源程序及实验结果a=[1,-1,0.9];b=1;x=chongji(-20,120);n=-20:120;h=filter(b,a,x);figure(1)stem(n,h);title('冲击响应');实验1-2运行结果b=[0.0181,0.0543,0.0543,0.0181];a=[1.000,-1.76,1.1829,-0.2781];w=pi*freqspace(500);H=freqz(b,a,w);MH=abs(H);AH=angle(H);subplot(2,1,1);plot(w/pi,MH);grid;axis([0,1,0,1]);xlabel('w(pi)');ylabel('|H|');title('幅度、相位响应');subplot(2,1,2);plot(w/pi,AH);grid;xlabel('w(pi)');ylabel('angle(H)');实验1-3运行结果n=0:30;%输入x(n)和冲激响应h(n) x=zeros(1,length(n)); h=zeros(1,length(n)); x([find((n>=0)&(n<=4))])=1; h([find((n>=0)&(n<=8))])=0.5;figure(1) subplot(3,1,1); stem(n,x);axis([0,30,0,2]); title('输入序列'); xlabel('n'); ylabel('x(n)');subplot(3,1,2); stem(n,h);axis([0,30,0,2]); title('冲激响应序列'); xlabel('n'); ylabel('h(n)');%输出响应y=conv(x,h); subplot(3,1,3); n=0:length(y)-1; stem(n,y);title('输出响应'); xlabel('n'); ylabel('y(n)');实验二 离散傅立叶变换与快速傅立叶变换一、 实验原理对有限长序列使用离散Fouier 变换(DFT)可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N 时,它的DFT 定义为()()[]()∑==-=1N n nk N W n x n x DFT k X 10-≤≤N k反变换为()()[]()∑==-=-101N n nkN W k X N k X IDFT n x 10-≤≤N n 有限长序列的DFT 是其Z 变换在单位圆上的等距采样,或者说是序列Fourier 变换的等距采样,因此可以用于序列的谱分析。
数字信号处理,matlab实验报告
Matlab实验报告实验一:1.实验Matlab代码:N=25;Q=0.9+0.3*j;WN=exp(-2*j*pi/N);x=zeros(25,1);format long; %长整型科学计数for k0=1:25x(k0,1)=Q^(k0-1);end;for k1=1:25;X1(k1,1)=(1-Q^N)/(1-Q*WN^(k1-1));end;X1;X2=fft(x,32);subplot(3,1,1);stem(abs(X1),'b.');axis([0,35,0,15]);title('N=25,formular');xlabel('n'); subplot(3,1,2);stem(abs(X2),'g.');axis([0,35,0,15]);title('N=32, FFT');xlabel('n');for(a=1:25)X3(a)=X1(a)-X2(a)end;subplot(3,1,3);stem(abs(X3),'r.');title('difference');xlabel('n');实验结果如图:实验结论:可以看出基2时间抽选的FFT算法与利用公式法所得到的DFT结果稍有偏差,但不大,在工程上可以使用计算机利用FFT处理数据。
2.实验Matlab代码:N = 1000; % Length of DFTn = [0:1:N-1];xn = 0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);Xk = fft(xn,N);k=[0:1:N-1];subplot(5,1,1);stem(k,abs(Xk(1:1:N)));title('DFT x(n)');xlabel('k');axis([140,240,0,6])subplot(5,1,2);stem(k, abs(Xk(1:1:N)),'r');%画出sin(0.3npi)-cos(0.302npi-pi/4) axis([140,160,0,6]);title('sin(0.3*pi*n)-cos(0.302*pi*n) ');xlabel('k');subplot(5,1,3);stem(k, 1000*abs(Xk(1:1:N)),'g');%画出0.001*cos(0.45npi)axis([220,230,0,6]);title('cos(0.45*pi*n) ');xlabel('k');subplot(5,1,4);stem(k,0.01*abs(Xk(1:1:N)),'k');%画%sin(0.3npi)-cos(0.302npi-pi/4)axis([140,160,0,6]);title('sin(0.3*pi*n)-cos(0.302*pi*n) ');xlabel('k');subplot(5,1,5);stem(k, 10*abs(Xk(1:1:N)),'m');%画出0.001*cos(0.45npi)axis([220,230,0,6]);title('cos(0.45*pi*n) ');xlabel('k');实验结果如图:实验结论:由上图及过程可知,当DFT变换长度为1000时所得到的谱线非常理想。
《数字信号处理》MATLAB编程实验报告
《计算机程序设计基础》实验报告
6
《数字信号处理》实验报告
实验项目 实验类别 基础性 MATLAB 编程语言环境使用 实验学时 4
实 验 目 的 及 要 求
(1) 正确进入 MATLAB 工作环境并熟悉其基本结构 (2) 熟悉其基本操作命令,包括变量的设置、help 命令的使用、结果的 保存与调用等 (3) 编写 M 文件并在环境中运行 (4) 信号与系统工具包使用
正弦信号程序代码
n=0:0.001:100; y=2*sin(0.1*n+pi/8); plot(n,y), grid on
《计算机程序设计基础》实验报告 3
计算机科学与工程学院 axis([0,100,-3,3])
正弦信号 x1(n)=2 sin(0.1n+pi/8)的图像为
复指数信号程序源代码 clear,t0=0;tf=5;dt=0.05;t1=1; t=t0:dt:tf; st=length(t); alpha=-0.5; w=10; x=exp((alpha+j*w)*t); subplot(1,2,1),plot(t,real(x)),grid on; subplot(1,2,2),plot(t,imag(x)),grid on;
复指数信号
x2 (n) Ae(机程序设计基础》实验报告
4
计算机科学与工程学院
思考题
1.说明点乘(.*)运算和乘法运算(*) 有何不同 答:每一个符号变量都被认为是一个元素,不论它的表达式多么复杂。因此如果你仅从符号
的视角出发,那所有的乘法都是点乘!就相当于两个数相乘一样,没有点乘还是差乘的分别。 但是如果一个矩阵是由符号变量组成的。 那么点乘和差乘就有分别了。 数值运算和符号运算都 是一样的,都要考虑点乘还是差乘
matlab 数字信号实验报告
matlab 数字信号实验报告MATLAB数字信号实验报告摘要:本实验使用MATLAB软件对数字信号进行处理和分析。
首先,我们使用MATLAB生成不同类型的数字信号,并对其进行采样和量化。
然后,我们利用MATLAB对这些数字信号进行滤波、傅里叶变换和频谱分析。
通过本实验,我们可以深入了解数字信号处理的基本原理和方法,并掌握MATLAB在数字信号处理中的应用。
1. 实验目的本实验旨在通过MATLAB软件对数字信号进行处理和分析,加深对数字信号处理原理的理解,掌握MATLAB在数字信号处理中的应用技巧。
2. 实验原理数字信号处理是对数字信号进行处理和分析的技术。
数字信号处理的基本原理包括采样、量化、滤波、傅里叶变换和频谱分析等。
MATLAB是一种强大的工具,可以方便地对数字信号进行处理和分析。
3. 实验内容(1)生成不同类型的数字信号在MATLAB中,我们可以生成不同类型的数字信号,如正弦信号、方波信号和三角波信号等。
通过改变信号的频率、幅度和相位等参数,可以得到不同的数字信号。
(2)采样和量化对生成的数字信号进行采样和量化,得到离散时间信号和离散幅度信号。
(3)滤波利用MATLAB对采样和量化后的数字信号进行滤波处理,去除噪声和干扰,得到清晰的信号。
(4)傅里叶变换和频谱分析对滤波后的数字信号进行傅里叶变换,得到信号的频谱图,分析信号的频率成分和能量分布。
4. 实验结果通过MATLAB对不同类型的数字信号进行处理和分析,得到了清晰的信号波形图和频谱图。
通过对比不同类型的数字信号,我们可以发现它们在频率、幅度和相位等方面的差异。
5. 结论本实验通过MATLAB软件对数字信号进行处理和分析,加深了对数字信号处理原理的理解,掌握了MATLAB在数字信号处理中的应用技巧。
数字信号处理在通信、音频、图像等领域有着广泛的应用,掌握数字信号处理技术对于工程技术人员具有重要的意义。
MATLAB作为一种强大的工具,为数字信号处理提供了便利和高效的解决方案。
数字信号处理实验三
数字信号处理实验三数字信号处理实验三是针对数字信号处理课程的一项实践性任务。
本实验旨在通过实际操作,加深对数字信号处理理论的理解,并培养学生的实验能力和问题解决能力。
在本实验中,我们将学习和实践以下内容:1. 实验目的本实验的目的是通过使用MATLAB软件进行数字信号处理,加深对数字信号处理基本概念和算法的理解,掌握数字信号的采样、量化、滤波等基本操作。
2. 实验器材在本实验中,我们将使用以下器材:- 个人计算机- MATLAB软件3. 实验步骤本实验的具体步骤如下:步骤一:信号生成首先,我们需要生成一个模拟信号,可以是正弦信号、方波信号或其他类型的信号。
在MATLAB中,我们可以使用相关函数生成这些信号。
生成信号的目的是为了后续的数字信号处理操作提供输入。
步骤二:信号采样在本步骤中,我们将对生成的模拟信号进行采样。
采样是指在一定的时间间隔内对信号进行离散化处理,得到离散时间上的信号序列。
在MATLAB中,我们可以使用采样函数对信号进行采样。
步骤三:信号量化在本步骤中,我们将对采样后的信号进行量化。
量化是指将连续的信号离散化为一组离散的幅值。
在MATLAB中,我们可以使用量化函数对信号进行量化。
步骤四:信号滤波在本步骤中,我们将对量化后的信号进行滤波。
滤波是指通过一系列滤波器对信号进行处理,以去除不需要的频率成分或噪声。
在MATLAB中,我们可以使用滤波函数对信号进行滤波。
步骤五:信号重构在本步骤中,我们将对滤波后的信号进行重构。
重构是指将离散化的信号恢复为连续的信号。
在MATLAB中,我们可以使用重构函数对信号进行重构。
步骤六:信号分析在本步骤中,我们将对重构后的信号进行分析。
分析是指对信号的频谱、功率等特性进行分析,以了解信号的特点和性能。
在MATLAB中,我们可以使用分析函数对信号进行分析。
4. 实验结果在完成以上步骤后,我们可以得到经过数字信号处理的结果。
这些结果可以是经过采样、量化、滤波和重构后的信号波形,也可以是信号的频谱、功率等特性。
matlab信号处理实验报告
matlab信号处理实验报告Matlab信号处理实验报告引言信号处理是一门研究如何获取、分析、变换和解释信号的学科。
在现代科技的发展中,信号处理在许多领域都扮演着重要的角色。
本文将以Matlab为工具,进行信号处理实验,并对实验结果进行分析和讨论。
实验一:信号的采样和重构在信号处理中,采样是指将连续时间的信号转化为离散时间的信号。
重构则是将离散时间的信号恢复为连续时间的信号。
我们选取了一个正弦信号进行实验。
首先,我们生成一个频率为10Hz的正弦信号,并对其进行采样。
使用Matlab的函数进行采样,可以得到离散时间的信号。
接下来,我们对采样后的信号进行重构。
使用Matlab的函数进行重构,可以得到连续时间的信号。
通过实验,我们可以观察到采样和重构过程中的信号失真情况。
信号的采样频率越高,重构后的信号越接近原始信号。
这是因为高采样频率可以提供更多的采样点,从而更好地还原原始信号。
实验二:信号的频谱分析频谱分析是信号处理中常用的一种方法,用于分析信号的频率成分。
我们选取了一个复杂的信号进行频谱分析。
首先,我们生成一个由多个正弦信号叠加而成的复杂信号。
使用Matlab的函数进行信号合成,可以得到复杂信号。
接下来,我们对复杂信号进行频谱分析。
使用Matlab的函数进行频谱分析,可以得到信号的频谱图。
通过实验,我们可以观察到复杂信号的频谱图中的不同频率成分。
频谱图上的峰值表示信号中的主要频率成分,而峰值的高度表示该频率成分的强度。
通过频谱分析,我们可以了解信号的频率特性,进而对信号进行进一步处理和分析。
实验三:信号的滤波处理滤波是信号处理中常用的一种方法,用于去除信号中的噪声或不需要的频率成分。
我们选取了一个包含噪声的信号进行滤波处理。
首先,我们生成一个包含噪声的信号。
使用Matlab的函数生成噪声信号,并将其与原始信号叠加,可以得到包含噪声的信号。
接下来,我们对包含噪声的信号进行滤波处理。
使用Matlab的函数进行滤波处理,可以得到去除噪声后的信号。
数字信号处理实验报告MATLAB
数字信号处理实验报告姓名:班级:09电信一班学号:2)]得下图二,图二图一3.将如下文件另存为:sigadd.m文件function [y,n] = sigadd(x1,n1,x2,n2)% 实现y(n) = x1(n)+x2(n)% -----------------------------% [y,n] = sigadd(x1,n1,x2,n2)% y = 在包含n1 和n2 的n点上求序列和,% x1 = 在n1上的第一序列% x2 = 在n2上的第二序列(n2可与n1不等)n = min(min(n1),min(n2)):max(max(n1),max(n2)); % y(n)的长度y1 = zeros(1,length(n)); y2 = y1; % 初始化y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; % 具有y的长度的x1y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; % 具有y的长度的x2y = y1+y2;在命令窗口输入:x1=[1,0.5,0.3,0.4];n1=-1:2;x2=[0.2,0.3,0.4,0.5,0.8,1];n2=-2:3; [y,n] = sigadd(x1,n1,x2,n2)得:y =n=-1:10;x=sin(0.4*pi*n);y=fliplr(x);n1=-fliplr(n);subplot(2,1,1),stem(n,x) subplot(2,1,2),stem(n1,y在命令窗口键入:n=-1:10; x=sin(0.4*pi*n);n (samples)实验结果:1.(1)在命令窗口输入:tic; [am,pha]=dft1(x)N=length(x);w=exp(-j*2*pi/N);for k=1:Nsum=0;for n=1:Nsum=sum+x(n)*w^((k-1)*(n-1));endam(k)=abs(sum);pha(k)=angle(sum);end;toc得到如下结果:am =Columns 1 through 11120.0000 41.0066 20.9050 14.3996 11.3137 9.6215 8.6591 8.1567 8.0000 8.1567 8.6591Columns 12 through 169.6215 11.3137 14.3996 20.9050 41.0066pha =Columns 1 through 110 1.7671 1.9635 2.1598 2.3562 2.5525 2.7489 2.9452 3.1416 -2.9452 -2.7489Columns 12 through 16-2.5525 -2.3562 -2.1598 -1.9635 -1.7671Elapsed time is 0.047000 seconds.(2)在命令窗口输入:tic;[am,pha]=dft2(x)N=length(x);n=[0:N-1];k=[0:N-1];w=exp(-j*2*pi/N);nk=n’*k;wnk=w.^(nk); Xk=x*wnk; am= abs(Xk); pha=angle(Xk); toc得到下图:figure(1)00.10.20.30.40.50.60.70.80.91signal x(n), 0 <= n <= 99(2)在命令窗口键入:n3=[0:1:99];y3=[x(1:1:10) zeros(1,90)]; %添90个零。
基于Matlab 的数字信号处理实验报告
第一章MATLAB基本知识MATLAB是一种面向科学和工程计算的高级语言,包含的几十个工具箱,覆盖了通信、自动控制、信号处理、图像处理、生命科学等科技领域,现已成为国际公认的最优秀的科技界应用软件。
该软件的特点是:强大的计算功能、计算结果和编程可视化及极高的转换效率。
本章目的是帮助新用户在领略MATLAB非凡能力的同时能轻松跨越MA TLAB的门槛。
§1.1 MATLAB 语言的基本使用环境一.MATLAB的安装MATLAB5.3 版本仅有一张光盘,运行其上的安装文件setup.exe,则可以按提示安装整个MA TLAB 系统。
MATLAB6.1 版本有两张光盘,将其中的程序盘插入驱动器,运行其上的安装文件setup.exe,则可以按提示安装整个MA TLAB 系统。
MATLAB6.x与以前的版本相比,在界面上的变化是很大的,以前的版本只给出一个又一个命令窗口,MA TLAB6.1的程序界面,除了其右侧的Command Window (命令窗口)之外,还有Launch Pad (程序调用板) 和Command History (命令的历史记录)两个子窗口,以及Workspace (工作空间管理程序) 和Current Directory (当前目录管理程序)等,使MA TLAB 的操作更容易、方便了。
二.MATLAB5.3的操作步骤由于实验室安装的是MA TLAB5.3,下面我们介绍MATLAB5.3 的操作步骤。
双击桌面的MA TLAB5.3 的图标,如图1-1,将进入MA TLAB5.3的Command Window (命令窗口),如图1-2。
1.帮助[Help]选项Help Windows 打开分类帮助窗Help Tips 打开函数文件命令帮助窗Help Desk 打开以超文本形式存储的帮助文件主页Examples and Demos 打开演示窗主页About MA TLAB 注册图标、版本、制造商和用户信息选择[Help]中不同的类别,用户可以从相关的帮助信息得到帮助。
数字信号处理matlab报告
实验一 熟悉matlab一、实验内容练习matlab 的使用,熟悉离散卷积运算,产生复指数序列()n j e 6/05.0π+二、实验目的1、掌握离散卷积计算机实现。
2、进一步对离散信号卷积算法的理解。
三、原理及算法概要算法:把冲激响应h(n)与输入序列x(n)分别输入到程序中,然后调用离散卷积函数y=conv(x.,h)即可得到所要求的结果。
原理:离散卷积定义为 ∑∞-∞=-=k k n h k x n y )()()(当序列为有限长时,则∑=-=nk k n h k x n y 0)()()(四、程序与运行结果% 实现复指数序列程序 n=0:30;x=exp(.05+i*pi/6).^n ; xr=real(x); xi=imag(x); xm=abs(x); xa=angle(x); figure;subplot(221);stem(n,xr);title('实部'); subplot(222);stem(n,xi);title('虚部'); subplot(223);stem(n,xm);title('模'); subplot(224);stem(n,xa);title('相角');程序运行结果如图1所示。
从图中可以看出,复指数序列()n j e 6/05.0π+的实部和虚部都是幅度按指数增长的正弦序列。
图1 复指数序列波形x1=[1 1 1 1 ];nx1=0:3;% 实现卷积程序 h1=[1 0.8 0.64 0.8^3 0.8^4];nh1=0:4;y1=conv(x1,h1);subplot(2,3,1);stem(nx1,x1);title('序列x1');xlabel('n');ylabel('x1(n)');subplot(2,3,2);stem(nh1,h1);title('序列h1');xlabel('n');ylabel('h1(n)');subplot(2,3,3);stem(y1);title('序列y1');xlabel('n');ylabel('y1(n)');x2=[1 1 1 1];nx2=0:3;nh2=0:1:20;h2=(0.8).^nh2;y2=conv(x2,h2);subplot(2,3,4);stem(x2);title('序列x2');xlabel('n');ylabel('x2(n)');subplot(2,3,5);stem(h2);title('序列h2');xlabel('n');ylabel('h2(n)');subplot(2,3,6);stem(y2);title('序列y2');xlabel('n');ylabel('y2(n)')图2 卷积程序波形五、结果分析有限长序列的离散卷积计算结果与理论值一致,而存在无限长序列做卷积时,由于在程序处理时是用比较长有限长序列代替的,所以与理论值基本相同。
数字信号处理MATLAB实验报告-2
实验报告课程名称:数字信号处理实验专业班级:姓名:学号:一、实验目的及任务 学会运用MATLAB 求解离散时间系统的零状态响应;学会运用MATLAB 求解离散时间系统的单位取样响应;学会运用MATLAB 求解离散时间系统的卷积和。
二、实验内容与步骤离散时间系统的响应离散时间LTI 系统可用线性常系数差分方程来描述,即∑∑==-=-Mj jN i i j n x b i n y a 00)()( (3-1) 其中,i a (0=i ,1,…,N )和j b (0=j ,1,…,M )为实常数。
MATLAB 中函数filter 可对式(13-1)的差分方程在指定时间范围内的输入序列所产生的响应进行求解。
函数filter 的语句格式为y=filter(b,a,x)其中,x 为输入的离散序列;y 为输出的离散序列;y 的长度与x 的长度一样;b 与a 分别为差分方程右端与左端的系数向量。
离散时间系统的单位取样响应系统的单位取样响应定义为系统在)(n δ激励下系统的零状态响应,用)(n h 表示。
MATLAB 求解单位取样响应可利用函数filter ,并将激励设为前面所定义的impDT 函数。
MATLAB 另一种求单位取样响应的方法是利用控制系统工具箱提供的函数impz 来实现。
impz 函数的常用语句格式为impz(b,a,N)其中,参数N 通常为正整数,代表计算单位取样响应的样值个数。
离散时间信号的卷积和运算由于系统的零状态响应是激励与系统的单位取样响应的卷积,因此卷积运算在离散时间信号处理领域被广泛应用。
离散时间信号的卷积定义为∑∞-∞=-==m m n h m x n h n x n y )()()(*)()( (3-2)可见,离散时间信号的卷积运算是求和运算,因而常称为“卷积和”。
MATLAB 求离散时间信号卷积和的命令为conv ,其语句格式为y=conv(x,h)其中,x 与h 表示离散时间信号值的向量;y 为卷积结果。
MATLAB综合实验报告
实验七综合实验一.实验目的能综合利用信号处理的理论和Matlab工具实现对信号进行分析和处理(1)熟练对信号进行时域和频域分析;(2)熟练进行滤波器设计和实现;(3)掌握对信号的滤波处理和分析。
二.实验原理设计并实现滤波器对信号进行分析和处理是信号处理课程学习的主要内容。
通过对信号进行频谱分析,能发现信号的频率特性,以及组成信号的频率分量。
对信号进行滤波处理,能改善信号的质量,或者为数据处理(如传输,分类等)提供预处理,等。
本次实验是对特定信号进行分析并进行滤波处理,需要综合应用之前的实验内容,主要有以下几个方面。
(1)离散时间信号与系统的时域分析Matlab为离散时间信号与系统的分析提供了丰富且功能强大的计算函数和绘图分析函数,便于离散时间信号和系统的时域表示和分析。
(2)信号的频域分析信号处理课程主要学习了离散信号和系统的频域分析方法与实现,以及滤波器的设计与实现。
离散信号与系统的频域分析包括DTFT、DFT、Z变换等,FFT则是DFT的快速实现。
用Matlab分析信号的频谱可以用freqz函数或者FFT函数。
(3)滤波器设计滤波器的设计首先要确定滤波器的类型,即低通、高通、带通还是带阻。
滤波器的边缘频率可以通过对信号的频谱分析得到,滤波器的幅度指标主要有阻带最小衰减As和通带最大衰减Ap。
一般来说,As越大,对截止通过的频率分量的衰减越大;Ap越小,对需要保留的频率分量的衰减越小。
因此,As越大,Ap越小,滤波器的性能越好,但随之而来,滤波器的阶数越大,实现的代价(包括计算时间和空间)越大。
由此,滤波器的设计需要对滤波器性能和实现代价进行均衡考虑。
另外根据冲激响应的长度可以分为IIR和FIR两种类型。
两种类型的滤波器各有特点。
用FIR滤波器可以设计出具有严格线性相位的滤波器,但在满足同样指标的条件下,FIR滤波器的阶数高于IIR滤波器。
Matlab为各种类型的滤波器的设计提供了丰富的函数,可以借助这些函数方便地设计出符合要求地滤波器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验题目:用Matlab语言编程实现学生成绩管理系统一、实验目的1.掌握建立和执行M文件的方法,学会M函数的编写及其调用,掌握多种函数类型;2.学习Matlab中的关系运算和逻辑运算,掌握它们的表达形式和用法;3.掌握Matlab中的选择结构和循环结构;4.学习使用帮助文档查找更多的Matlab功能;5.掌握Matlab的基本绘图命令,学习运用Matlab绘制一维、二维、三维图形的方法。
二、实验要求1.使用函数(多个函数M文件)进行分析和设计;2.要使用到以下函数类型:主函数、子函数、私有函数。
三、实验内容功能内容:1.学生信息为:学号、姓名、三门课成绩(英语、数学、物理);2.从键盘输入学生成绩,建立信息库;3.从文件读入学生信息;4.显示信息库中的所有学生的信息;5.将学生成绩信息库保存为文件;6.根据学号查询某一个学生的成绩统计信息:三门课成绩、总分、平均分;7.根据学号将某一个学生的信息从信息库删除;8.新增一个学生的信息;9.按总分成绩从高到低排序输出学生信息;10.图形输出所有学生成绩统计信息(饼图pie、柱状图bar)。
四、实验设计及分析1 主函数的设计及分析主函数主要用于显示学生管理系统的主界面,以及通过对其他几个私有函数的调用来实现相应的功能。
主函数名为zonghe(),首先利用disp()屏幕输出函数来提示用户如何使用该管理系统。
然后通过input()输入函数输入字符,通过判断输入的字符与哪个私有函数对应的字符匹配来调用相应的私有函数实现相应的功能。
其中将条件语句放入while循环中,使系统能循环运行直到用户输入‘H‘才跳出循环。
主函数zonghe()的源代码:function zonghe()disp('Welcome to the students'' information library!');disp('Input A to input students'' information');disp('Input B to display all students'' information');disp('Input C to search a stuedent''s information');disp('Input D to delete a stuedent''s information');disp('Input E to add a new stuedent''s information');disp('Input F to display stuedents'' information from high to low of total score');disp('Input G to graphical display all stuedents'' information'); disp('Input H to exit');x=input('Please input the FUNCTION NUMBER:','s');while x~='H'if x=='A'disp('Input students'' information.');ztest();elseif x=='B'disp('Display all students'' information.');displaytest();elseif x=='C'disp('Search a stuedent''s information.');search();elseif x=='D'disp('Delete a stuedent''s information.');shanchu();elseif x=='E'disp('Add a new stuedent''s information.');add();elseif x=='F'disp('Display stuedents'' information from high to low of total score.');paixu();elseif x=='G'disp('Graphical display all stuedents'' information.');tuxing();elseif x=='H'disp('Thank you for using the students'' information library!');break;elsedisp('Invalid function number. Program is terminated!');endx=input('\nPlease input the FUNCTION NUMBER:','s');endend2 七个私有函数的设计与分析2.1 function ztest()的设计与分析ztest()函数实现从键盘输入学生成绩建立信息库的功能。
首先通过input()函数输入学生的个数N,然后建立一个cell数组grades,通过for循环和input()函数将学生的姓名、学号、英语、数学、物理成绩输入到cell 数组中,最后用save函数将grades数组和N存储到名为“stuxx”的文件中。
ztest()函数的源代码:function ztest()% Using cell array to implement% show how to use control statements.% 1. conditional statements% 2. loop statements% 3. cell array --> instead of struct% input the number of students first and input these students' grades. % after all, do grades statistics to print information% input the number of studentsN = input( 'number of students:' );if N<=0disp('Invalid number of students!');returnend% input students' grads looply% dynamiclly create cell array to store gradsgrades = cell( N, 5); % prealloate N by 5 cell array% N:number of students, 5: number of subjectsfor n=int8(1:N)fprintf('please input information for %d student\n', n);grades{n,1} = input('name:','s'); % grades(n).name =input('name:');grades{n,2} = input('ID:'); % grades(n).ID = input('ID:');grades{n,3} = input('eng:'); % grades(n).eng = input('eng:'); grades{n,4} = input('math:'); % grades(n).math = input('math:'); grades{n,5} = input('phy:'); % grades(n).phy = input('phy:'); endsave('stuxx','N','grades');end2.2 function displaytest()的设计与分析displaytest()函数实现的是显示信息库中所有学生的信息的功能。
首先通过load函数将“stuxx”文件中的信息载入进来,再判断当前信息库中的学生个数是否大于零,若否则提示出错并返回,若是则继续执行下去。
利用for循环以及fprintf函数将信息库中的信息、学生成绩的总分、平均分以及三门课各自的成绩等级都显示在屏幕上。
其中三门课各自的成绩等级由子函数graderank()来实现,然后在displaytest()函数中进行调用显示。
displaytest()函数的源代码:function displaytest()load('stuxx');% grades statisticsif N<=0disp('There is no students'' information!');returnenddisp(' name ID eng(rank) math(rank) phy(rank) sum average');for n=int8(1:N)grade_sum = grades{n,3}+grades{n,4}+grades{n,5};fprintf(' %s %d %3.1f(%s) %3.1f(%s) %3.1f(%s) %3.1f %3.1f\n ', ...grades{n,1}, grades{n,2},...grades{n,3}, graderank( grades{n,3} ),...grades{n,4}, graderank( grades{n,4} ),...grades{n,5}, graderank( grades{n,5} ),...grade_sum, grade_sum/3 );endend% subfunctionfunction rank = graderank( grade )if grade >= 90rank = 'great';elseif grade < 90 && grade >= 80rank = 'nice';elseif grade <80 && grade >= 70rank = 'ok';elserank = 'bad';endend2.3 function search()的设计与分析search()函数实现的是根据学号查询某一个学生的成绩统计信息的功能。