北邮大二下 Matlab实验报告
matlab实验报告
Matlab实验报告一、实验名称:matlab实验报告二、实验目的:熟悉并学会掌握matlab的基本操作。
三、实验内容:准确编写第二,三,四章课后习题的matlab程序。
四、实验数据处理第二章MATLAB 基本操作第一题:利用基本矩阵产生3X3和15X8的单位阵、全1阵、全0阵,随机分布矩阵([-1,1]之间)、正态分布随机阵(均值为1,方差为4)。
程序:>> A=eye(3)A = 1 0 00 1 00 0 1>> A=ones(3)A =1 1 11 1 11 1 1>> A=zeros(3)A =0 0 00 0 00 0 0>> A=1-2*rand(3)A =-0.9003 0.0280 0.08710.5377 -0.7826 0.9630-0.2137 -0.5242 -0.6428>> A=2*randn(3)+1A =0.1349 1.5754 3.3783-2.3312 -1.2929 0.92471.2507 3.3818 1.6546>> B=eye(2,3)B =1 0 00 1 0>> B=ones(2,3)B = 1 1 11 1 1>> B=zeros(2,3)B =0 0 00 0 0>> B=1-2*rand(2,3)B = 0.1106 -0.5839 -0.4764-0.2309 -0.8436 0.6475>> B=2*randn(2,3)+1B =1.3493 2.4516 5.36640.6266 -0.1766 0.7272第五题:利用rand函数产生(0,1)间均匀分布的5X5随机矩阵A,然后统计A中大于等于0.6的元素个数。
程序:A=rand(5)A =0.4057 0.0579 0.2028 0.0153 0.41860.9355 0.3529 0.1987 0.7468 0.84620.9169 0.8132 0.6038 0.4451 0.52520.4103 0.0099 0.2722 0.9318 0.20260.8936 0.1389 0.1988 0.4660 0.6721>> n=sum(sum(A>=0.6))n =9第六题:利用rand函数产生均值为0,方差为1的4X4正态分布随机矩阵A,然后统计A 中大于-0.5且小于0.5的元素个数。
北京邮电大学_dsp_matlab实验报告
数字信号处理实验报告实验名称:数字信号处理实验学生姓名:班级:班内序号:1.实验要求假设信号x(n) 由下述信号组成:请选择合适的长度N 和窗函数,用DFT 分析其频谱,得到清楚的三根谱线。
2.实验代码和实验结果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程序设计(含实验报告)
实验二 MATLAB 程序设计一、 实验目的1.掌握利用if 语句实现选择结构的方法。
2.掌握利用switch 语句实现多分支选择结构的方法。
3.掌握利用for 语句实现循环结构的方法。
4.掌握利用while 语句实现循环结构的方法。
5.掌握MATLAB 函数的编写及调试方法。
二、 实验的设备及条件计算机一台(带有MATLAB7.0以上的软件环境)。
M 文件的编写:启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。
点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正三、 实验内容1.编写求解方程02=++c bx ax 的根的函数(这个方程不一定为一元二次方程,因c b a 、、的不同取值而定),这里应根据c b a 、、的不同取值分别处理,有输入参数提示,当0~,0,0===c b a 时应提示“为恒不等式!”。
并输入几组典型值加以检验。
(提示:提示输入使用input 函数)2.输入一个百分制成绩,要求输出成绩等级A+、A 、B 、C 、D 、E 。
其中100分为A+,90分~99分为A ,80分~89分为B ,70分~79分为C ,60分~69分为D ,60分以下为E 。
要求:(1)用switch 语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
(提示:注意单元矩阵的用法)3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。
重复此过程,最终得到的结果为1。
如:2?13?10?5?16?8?4?2?16?3?10?5?16?8?4?2?1运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。
请为关键的Matlab 语句填写上相关注释,说明其含义或功能。
北邮Matlab实验报告概论
《数字信号处理》Matlab 实验一.实现重叠相加和重叠保留算法,完成线性卷积的分段计算(可任意指定()x n 及()h n );1、 对算法的概括性说明;1)重叠相加法重叠相加法是将待过滤的信号分割成长为N 的若干段,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。
具体算法实现:建立缓存序列,每次输入N 点序列,通过计算x(n)和h(n) 的循环卷积实现线性卷积运算,将缓存的M-1点序列和卷积结果相加,并输出前N 点作为计算结果,同时缓存后M-1点,如此循环,直至所有分段计算完毕,则输出序列y(n)为最终计算结果。
2)重叠保留法重叠保留法相当于将x l (n )和h(n )作循环卷积,然后找出循环卷积中相当于线性卷积的部分。
在这种情况下,将序列y(n)分为长为N 的若干段,每个输入段和前一段有M-1个重叠点 。
此时只需要将发生重叠的前M-1个点舍去,保留重叠的部分并输出,则可获得序列y(n)。
2、源代码及流程图;2.1 源代码:function[y] = overlap_add(x,h,N)M = length(h);if N<MN = M+1;endL = M+N-1;Lx = length(x);T = ceil(Lx/N);t = zeros(1,M-1);x = [x,zeros(1,(T+1)*N-Lx)];y = zeros(1,(T+1)*N);for i = 0:1:Txi = i*N+1;x_seg = x(xi:xi+N-1);y_seg = circular_conv(x_seg,h,L);y_seg(1:M-1) = y_seg(1:M-1)+t(1:M-1); t(1:M-1) = y_seg(N+1:L);y(xi:xi+N-1) = y_seg(1:N);endy = y(1:Lx+M-1);endfunction[y] = overlap_save(x,h,N)Lx = length(x);M = length(h);if N<MN = M+1;endL = N+M-1;t = zeros(1,M-1);T = ceil(Lx/N);x = [x,zeros(1,(T+1)*N-Lx)];y = zeros(1,(T+1)*N);for i = 0:1:Txi = i*N+1;x_seg= [t,x(xi:xi+N-1)];t = x_seg(N+1:N+M-1);y_seg = circular_conv(x_seg,h,L); y(xi:xi+N-1) = y_seg(M:N+M-1); endy = y(1:Lx+M-1);endfunction[y] = circular_conv(x1,x2,L) X1k = fft(x1,L);X2k = fft(x2,L);Yk = X1k.*X2k;y = ifft(Yk);endn = 0:9;xn = n+1;hn = [1,0,-1];N = 6;y1 = conv(hn,xn)y2 = overlap_add(xn,hn,N)y3 = overlap_save(xn,hn,N)2.2流程图1)重叠相加法2)重叠保留法3、实验结果;4、结合教材3.5.1节作运算量分析;重叠相加法和重叠保留法的算法的时间复杂度均为O(n),空间复杂度均为O(1),二者都具有较好的时间和空间复杂度。
matlab计算机实验报告
matlab计算机实验报告Matlab计算机实验报告引言Matlab是一种强大的计算机软件,广泛应用于科学计算、数据分析和工程设计等领域。
本实验报告旨在介绍我对Matlab的实验研究和应用。
通过实验,我深入了解了Matlab的功能和特点,并通过实际案例展示了其在科学计算和数据处理中的应用。
实验一:基本操作和语法在本实验中,我首先学习了Matlab的基本操作和语法。
通过编写简单的程序,我熟悉了Matlab的变量定义、赋值、运算符和条件语句等基本语法。
我还学习了Matlab的矩阵操作和向量化计算的优势。
通过实例演示,我发现Matlab在处理大规模数据时具有高效性和便捷性。
实验二:数据可视化数据可视化是Matlab的重要应用之一。
在本实验中,我学习了如何使用Matlab绘制各种图表,如折线图、散点图、柱状图和饼图等。
我了解了Matlab 的绘图函数和参数设置,并通过实例展示了如何将数据转化为直观的图形展示。
数据可视化不仅可以帮助我们更好地理解数据,还可以用于数据分析和决策支持。
实验三:数值计算和优化Matlab在数值计算和优化方面具有强大的功能。
在本实验中,我学习了Matlab 的数值计算函数和工具箱,如数值积分、微分方程求解和线性代数运算等。
通过实例研究,我发现Matlab在求解复杂数学问题和优化算法方面具有出色的性能。
这对于科学研究和工程设计中的数值分析和优化问题非常有用。
实验四:图像处理和模式识别Matlab在图像处理和模式识别领域也有广泛的应用。
在本实验中,我学习了Matlab的图像处理工具箱和模式识别算法。
通过实例演示,我了解了如何使用Matlab进行图像滤波、边缘检测和特征提取等操作。
我还学习了一些常见的模式识别算法,如支持向量机和神经网络等。
这些技术在计算机视觉和模式识别中具有重要的应用价值。
实验五:信号处理和系统建模Matlab在信号处理和系统建模方面也有广泛的应用。
在本实验中,我学习了Matlab的信号处理工具箱和系统建模工具。
MATLAB实验报告北京邮电大学
Matlab实验报告学院:信息与通信工程学院班级:201321113学号:2013210381班内序号:18姓名:石雪原实验题目1.实现重叠相加和重叠保留算法一.实验原理重叠相加法和重叠保留法的实质都是以逐段地方式通过循环卷积来完成线性卷积的计算。
将输入序列x (n)进行分段,每段长为N,且N>M(M为有限长因果序列h (n)的长度),x (n) 逐段与h (n)进行循环卷积,在重叠保留法中需在x (n)序列首部加入长度为M-1的0序列。
在算法中,在获得N个点的输入后,进行N+M-1点循环卷积计算,之后输出N个点。
通过for循环逐段进行循环卷积,使用FFT和IFFT 计算两个有限长序列的N点循环卷积结果。
二.源代码和流程图重叠相加法代码function [Y]=overpl(x,h,N)Lx=length(x); % 序列长度M=length(h); %h (n )长度x=[x,zeros(1,N-1)];t=zeros(1,M-1);Y=zeros(1,Lx+M-1);a=floor(Lx/N);for k=0:aA=x(k*N+1:k*N+N);y1=fft(A,Lx+M-1); % 利用fft 进行运算y2=fft(h,Lx+M-1);y3=y1.*y2;q=ifft(y3,Lx+M-1);Y(k*N+1:k*N+M-1)=q(1:M-1)+t(1:M-1);Y(k*N+M:k*N+N)=q(M:N);t(1:M-1)=q(N+1:N+M-1);endY(1:Lx+M-1);对应流程图图一:每段利用fft和ifft实现循环卷积图二:对X (n)逐段进行循环卷积然后相加得输出线性卷积结果y (n)重叠保留法代码fun cti on [Y]二overlpsav(x,h,N)Lx=le ngth(x);M=le ngth(h);M仁M -1;L=N-M1;h=[h,zeros(1,N-M)];图x=[zeros(1,M1),x,zeros(1,N-1)];a 二floor ((Lx+M1-1)/(L))+1; Y=zeros(1,N); for k=0:a-1 xk=x(k*L+1:k*L+N); b=fft(xk,N); C=fft(h,N); Z=b.*C;Y (k+1,:)=ifft(Z,N); end Y=Y (:,M:N): Y=( Y(:))'对应流程图装成单列向量再转置成行向量 输出输入数据 x I 各段搭接长 长度及脉冲 —\度M1,有效 响应长度k数据长度L将h 延长 至循环 长度N㈡把x 前面 加上(M- 1)个零各段进 行卷积把 K+1X N 阶输出矩 阵Y 初始 化Y 中各行均去 掉前M-1个样 Z 本,转置后构V成新的Y三.实验结果重叠相加法x=[1,2,3] h二[1,2,3] N=41 5]? 3X] 1 K 12 9 0緒=1 1 10 12 9 0重叠保留法x=[1,2,3,4,5,6,7,8,9,10] h=[1,0,-1] N=4四.结果分析(有关运算量的定量分析结果)有限长因果序列x (n)h (n)的长度分别为N和M直接计算线性卷积y (n),y(n)可视为N个序列的叠加结果,序列长度为M 所以每生成一个序列需完成M次乘法,共需完成MN次乘法运算。
北邮Matlab仿真 实验
[键入公司名称]Matlab仿真实验[键入文档副标题]2010211201陈建文102109872012-12-10实验报告主要内容是对3个实验的完成过程的介绍和总结目录数字信号的FFT分析 (2)DTMF信号的编码 (6)FIR数字滤波器的设计和实现 (10)错误分析 (14)经验总结 (15)实验一:数字信号的FFT分析:实验目的:(1)用傅立叶变换进行分析是基本参数的选择。
(2)经过离散时间傅立叶变换和有限长度离散傅立叶变换后信号频谱上的区别,前者DTMF时间域是离散信号,频率域还是连续的,而DFT在两个区域中都是离散的。
(3)离散傅立叶变换的基本原理、特性,以及经典的快速算法,体会快速算法的效率(4)获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时域分析的学习和研究大侠基础。
(5)建立DFT从整体上可看成是有窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用是数字音频压缩中的分析滤波器,例如DVD AC3和 MPEG Audio。
实验内容和要求:(1)离散信号的频谱分析:设信号 x(n)=0.001*cos(0.45n*pi)+sin(0.3n*pi)-cos(0.302n*pi-pi/4)此信号的0.3pi和0.302pi的两根频谱线相距很近,谱线0.45pi的幅度很小,请选择合适的序列长度N和窗函数,用DFT分析其频谱,要求得到清楚的三根谱线。
(2)DTMF信号频谱分析用计算机声卡采用一段通信系统中电话双音多频(DTMF)拨号数字0——9的数据,采用快速傅立叶变换(FFT)分析这10个号码DTMF拨号是的频谱。
设计思路1:只要将x(n)表达式敲入,再利用fft(x(n),N)函数进行傅立叶变换,之后再用subplot函数进行图形绘制,本题关键在于N的确定,只有合适的大小才能满足题目要求。
代码1:N = 1000; % Length of DFT n = [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);xn1=0.001*cos(0.45*n*pi);Xk1 = fft(xn1,N);xn2=sin(0.3*n*pi);Xk2 = fft(xn2,N);xn3=-cos(0.302*n*pi-pi/4);Xk3 = fft(xn3,N);k=[0:1:N/2];subplot(5,1,1);stem(k,abs(xn(1:1:(N/2+1))),'.');title('x(n)');xlabel( 'k');axis([140,240,0,4]);subplot(5,1,2);stem(k,abs(Xk(1:1:(N/2+1))),'r.');title('DFT0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4)');xlabel('k');axis([140,240,0,4]);subplot(5,1,3);stem(k,abs(Xk1(1:1:(N/2+1))),'g.');title('DFpi)');xlab el('k');axis([140,240,0,4]);subplot(5,1,4);stem(k,abs(Xk2(1:1:(N/2+1))),'b');title('DFTsin(0.3*n*pi)');xlabel('k');axis([140,240,0,4]);subplot(5,1,5);stem(k,abs(Xk3(1:1:(N/2+1))));title('DFT -cos(0.302*n*pi-pi/4)');xlabel('k');axis([140,240,0,4]);3 / 15截图 1:从图中可以看出,后边三幅图片的频谱特性还是有比较明显的区别的。
matlab 实验报告
matlab 实验报告Matlab 实验报告引言:Matlab(Matrix Laboratory)是一种强大的科学计算软件,它为科学家、工程师和研究人员提供了一个强大的计算环境。
本实验报告旨在介绍我对Matlab的实验结果和使用体验,以及对其优点和局限性的思考。
一、Matlab的基本功能和特点Matlab是一种高级编程语言和开发环境,它具有广泛的数学和工程计算功能。
通过Matlab,我可以进行矩阵运算、数值计算、数据可视化、算法开发等一系列操作。
Matlab的语法简洁易懂,可以快速实现复杂的计算任务。
此外,Matlab还提供了大量的工具箱,如信号处理、控制系统、图像处理等,使得各种领域的科学研究和工程应用变得更加便捷。
二、实验结果与应用案例在本次实验中,我选择了一个经典的数值计算问题——求解非线性方程。
通过Matlab的数值计算能力,我可以使用不同的迭代方法来求解方程的根。
在实验中,我使用了牛顿迭代法、二分法和割线法来求解方程。
通过对比这些方法的收敛速度和精度,我得出了不同方法的优缺点。
在实际应用中,Matlab可以广泛应用于信号处理、图像处理、数据分析等领域。
例如,在信号处理中,我可以使用Matlab的信号处理工具箱来进行滤波、频谱分析等操作。
在图像处理中,我可以利用Matlab的图像处理工具箱进行图像增强、边缘检测等操作。
这些应用案例充分展示了Matlab在科学计算和工程应用中的重要性和灵活性。
三、Matlab的优点1. 强大的计算功能:Matlab提供了丰富的数学和工程计算函数,可以高效地进行复杂的计算任务。
2. 简洁的语法:Matlab的语法简洁易懂,使得编程变得更加高效和便捷。
3. 丰富的工具箱:Matlab提供了大量的工具箱,覆盖了各种领域的科学计算和工程应用需求。
4. 可视化能力强:Matlab提供了丰富的绘图函数,可以直观地展示数据和计算结果。
四、Matlab的局限性1. 高昂的价格:Matlab是一款商业软件,其价格较高,对于个人用户而言可能不太容易承受。
用MATLAB实现线性卷积运算北邮
信息及通信工程学院数字信号处理实验报告实验题目:用MATLAB实现线性卷积运算班级:2019211113姓名:学号:日期:2019年5月索引一、实验原理 (1)1、算法产生背景 (1)2、算法基本思想 (1)1)重叠相加法 (1)2)重叠保留法 (2)二、流程图设计 (3)1、重叠相加法 (3)2、重叠保留法 (3)三、MATLAB源代码 (3)1、重叠相加源码 (3)2、重叠保留源码 (4)四、实验结果与分析 (5)①调用CONV()计算 (5)②测试重叠相加算法 (5)③测试重叠保留算法 (5)五、讨论与总结 (6)1、算法效率分析: (6)A.重叠相加法 (6)B.重叠保留法 (7)C.调用conv() (8)D.综合对比分析 (8)2、故障和问题分析 (9)①分段问题 (9)②运算完整性问题 (9)③算法硬件实现 (10)一、实验原理1、算法产生背景DFT是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。
在形式上,变换两端(时域和频域上)的序列是有限长的。
DFT具备明确且合理的物理含义,适合应用于数字系统,同时可以方便地由计算机进行运算。
对于线性非移变离散系统,可由线性卷积表示时域输入输出关系,即通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。
因此,产生了重叠相加法和重叠保留法两种典型的算法,用以快速计算线性卷积,成为了DFT的一个重要应用。
2、算法基本思想1)重叠相加法重叠相加法是将待过滤的信号分割成长为N的若干段,如图1所示,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。
具体算法实现原理如图2所示,建立缓存序列,每次输入N点序列,通过计算x(n)和h(n) 的循环卷积实现线性卷积运算,将缓存的M-1点序列和卷积结果相加,并输出前N点作为计算结果,同时缓存后M-1点,如此循环,直至所有分段计算完毕,则输出序列y(n)为最终计算结果。
matlab实验报告总结
matlab实验报告总结Matlab实验报告总结引言:Matlab是一种广泛应用于科学计算和工程领域的高级编程语言和环境。
在这个实验报告总结中,我将回顾我在使用Matlab进行实验时的经验和收获。
通过这些实验,我学到了很多关于Matlab的功能和应用,同时也提高了自己的编程和数据分析能力。
一、Matlab基础知识的学习和应用在实验中,我首先学习了Matlab的基础知识,包括变量的定义、矩阵和数组的操作、函数的使用等。
通过这些基础知识的学习,我能够更加熟练地使用Matlab进行数值计算和数据处理。
例如,我学会了如何定义一个矩阵,并进行矩阵的加减乘除运算,这对于解决线性方程组或者进行矩阵变换非常有帮助。
二、数据可视化与图像处理Matlab具有强大的数据可视化功能,通过使用Matlab的绘图函数,我可以将数据以图表的形式直观地展示出来。
在实验中,我使用Matlab绘制了各种类型的图表,包括折线图、柱状图、散点图等。
这些图表不仅美观,而且能够更好地帮助我理解和分析数据。
此外,我还学习了Matlab的图像处理工具箱,通过使用这些工具,我可以对图像进行滤波、增强、分割等操作,从而得到更好的图像效果。
三、数值计算和优化算法Matlab提供了丰富的数值计算和优化算法,通过使用这些算法,我可以解决各种数学问题和优化问题。
在实验中,我学习了如何使用Matlab进行数值积分、数值微分、方程求解等操作。
同时,我还学习了一些常用的优化算法,如遗传算法、粒子群算法等。
这些算法在实际问题中具有广泛的应用,通过使用Matlab,我能够更加高效地解决这些问题。
四、信号处理与模拟仿真Matlab在信号处理和模拟仿真方面也有很强的功能。
通过使用Matlab的信号处理工具箱,我可以对信号进行滤波、降噪、频谱分析等操作。
这对于处理实际采集到的信号数据非常有帮助。
同时,我还学习了如何使用Matlab进行模拟仿真,通过建立数学模型和仿真算法,我可以模拟和分析各种实际系统的行为。
(完整word)Matlab实验报告
实验一:Matlab操作环境熟悉一、实验目的1.初步了解Matlab操作环境.2.学习使用图形函数计算器命令funtool及其环境。
二、实验内容熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format 命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool,并进行下列计算:1.单函数运算操作。
求下列函数的符号导数(1)y=sin(x);(2) y=(1+x)^3*(2-x);求下列函数的符号积分(1)y=cos(x);(2)y=1/(1+x^2);(3)y=1/sqrt(1—x^2);(4)y=(x1)/(x+1)/(x+2)求反函数(1)y=(x-1)/(2*x+3); (2) y=exp(x);(3) y=log(x+sqrt(1+x^2));代数式的化简(1)(x+1)*(x-1)*(x-2)/(x-3)/(x—4);(2)sin(x)^2+cos(x)^2;(3)x+sin(x)+2*x—3*cos(x)+4*x*sin(x);2.函数与参数的运算操作。
从y=x^2通过参数的选择去观察下列函数的图形变化(1)y1=(x+1)^2(2)y2=(x+2)^2(3) y3=2*x^2 (4) y4=x^2+2 (5) y5=x^4 (6) y6=x^2/2 3.两个函数之间的操作求和(1)sin(x)+cos(x) (2) 1+x+x^2+x^3+x^4+x^5乘积(1)exp(—x)*sin(x) (2) sin(x)*x商(1)sin(x)/cos(x); (2) x/(1+x^2); (3) 1/(x—1)/(x—2); 求复合函数(1)y=exp(u) u=sin(x) (2) y=sqrt(u) u=1+exp(x^2)(3) y=sin(u) u=asin(x) (4) y=sinh(u) u=-x实验二:MATLAB基本操作与用法一、实验目的1.掌握用MATLAB命令窗口进行简单数学运算。
matlab实验报告
matlab实验报告《matlab 实验报告》一、实验目的通过本次实验,熟悉 MATLAB 软件的基本操作和功能,掌握使用MATLAB 进行数学计算、数据处理、图形绘制等方面的方法和技巧,提高运用 MATLAB 解决实际问题的能力。
二、实验环境1、计算机:_____2、操作系统:_____3、 MATLAB 版本:_____三、实验内容及步骤(一)矩阵运算1、创建矩阵在 MATLAB 中,可以通过直接输入元素的方式创建矩阵,例如:`A = 1 2 3; 4 5 6; 7 8 9`,创建了一个 3 行 3 列的矩阵 A。
还可以使用函数来创建特定类型的矩阵,如全零矩阵`zeros(m,n)`、全 1 矩阵`ones(m,n)`、单位矩阵`eye(n)`等。
2、矩阵的基本运算加法和减法:两个矩阵相加或相减,要求它们的维度相同,对应元素进行运算。
乘法:矩阵乘法需要满足前一个矩阵的列数等于后一个矩阵的行数。
转置:使用`A'`来获取矩阵 A 的转置。
(二)函数的使用1、自定义函数可以在 MATLAB 中自定义函数,例如定义一个计算两个数之和的函数:```matlabfunction s = add_numbers(a,b)s = a + b;end```2、调用函数在命令窗口中输入`add_numbers(3,5)`即可得到结果 8。
(三)数据的读取和写入1、读取数据使用`load`函数可以读取数据文件,例如`load('datatxt')`。
2、写入数据使用`save`函数可以将数据保存到文件中,例如`save('resulttxt',A)`,将矩阵 A 保存到`resulttxt`文件中。
(四)图形绘制1、二维图形绘制折线图:使用`plot(x,y)`函数,其中 x 和 y 分别是横坐标和纵坐标的数据。
绘制柱状图:使用`bar(x,y)`函数。
2、三维图形绘制三维曲线:使用`plot3(x,y,z)`函数。
北邮数字信号处理MATLAB实验报告
数字信号处理软件实验——MatLab仿真实验报告学院:电子工程学院班级:2013211202姓名:学号:实验一:数字信号的 FFT 分析1、实验内容及要求(1) 离散信号的频谱分析:设信号 此信号的0.3pi 和 0.302pi 两根谱线相距很近,谱线 0.45pi 的幅度很小,请选择合适的序列长度 N 和窗函数,用 DFT 分析其频谱,要求得到清楚的三根谱线。
(2) DTMF 信号频谱分析用计算机声卡采用一段通信系统中电话双音多频(DTMF )拨号数字 0~9的数据,采用快速傅立叶变换(FFT )分析这10个号码DTMF 拨号时的频谱。
2、实验目的通过本次实验,应该掌握:(a) 用傅立叶变换进行信号分析时基本参数的选择。
(b) 经过离散时间傅立叶变换(DTFT )和有限长度离散傅立叶变换(DFT ) 后信号频谱上的区别,前者 DTFT 时间域是离散信号,频率域还是连续的,而 DFT 在两个域中都是离散的。
(c) 离散傅立叶变换的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。
(d) 获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。
(e) 建立 DFT 从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用是数字音频压缩中的分析滤波器,例如 DVD AC3 和MPEG Audio 。
3.设计思路及实验步骤1)离散信号的频谱分析:该信号中要求能够清楚的观察到三根谱线。
由于频率0.3pi 和0.302pi 间隔非常小,要清楚的显示,必须采取足够大小的N ,使得分辨率足够好,至少到0.001单位级,而频率0.45pi 的幅度很小,要清楚的观察到它的谱线,必须采取幅度够大的窗函数,使得它的频谱幅度变大一些。
同时还要注意频谱泄漏的问题,三个正弦函数的周期(2pi/w )分别为20,40,1000,所以为了避免产生频谱泄漏(k=w/w0为整数),采样点数N 必须为1000的整数倍。
Matlab实验报告_2
实验一 Matlab基础知识一、实验目的:1.熟悉启动和退出Matlab的方法。
2.熟悉Matlab命令窗口的组成。
3.掌握建立矩阵的方法。
4.掌握Matlab各种表达式的书写规则以及常用函数的使用。
二、实验内容:1.求[100,999]之间能被21整除的数的个数。
(rem)2.建立一个字符串向量,删除其中的大写字母。
(find)3.输入矩阵,并找出其中大于或等于5的元素。
(find)4.不采用循环的形式求出和式6312ii=∑的数值解。
(sum)三、实验步骤:●求[100,199]之间能被21整除的数的个数。
(rem)1.开始→程序→Matlab2.输入命令:»m=100:999;»p=rem(m,21);»q=sum(p==0)ans=43●建立一个字符串向量,删除其中的大写字母。
(find)1.输入命令:»k=input('’,’s’);Eie48458DHUEI4778»f=find(k>=’A’&k<=’Z’);f=9 10 11 12 13»k(f)=[ ]K=eie484584778●输入矩阵,并找出其中大于或等于5的元素。
(find)1.输入命令:»h=[4 8 10;3 6 9; 5 7 3];»[i,j]=find(h>=5)i=3 j=11 22 23 21 32 3●不采用循环的形式求出和式的数值解。
(sum)1.输入命令:»w=1:63;»q=sum(2.^w)q=1.8447e+019实验二 Matlab 基本程序一、 实验目的:1. 熟悉Matlab 的环境与工作空间。
2. 熟悉M 文件与M 函数的编写与应用。
3. 熟悉Matlab 的控制语句。
4. 掌握if,switch,for 等语句的使用。
二、 实验内容:1. 根据y=1+1/3+1/5+……+1/(2n-1),编程求:y<5时最大n 值以及对应的y 值。
matlab实验一实验报告
matlab实验一实验报告实验一:Matlab实验报告引言:Matlab是一种强大的数学软件工具,广泛应用于科学计算、数据分析和工程设计等领域。
本实验旨在通过使用Matlab解决实际问题,探索其功能和应用。
一、实验目的本次实验的主要目的是熟悉Matlab的基本操作和常用函数,了解其在科学计算中的应用。
二、实验内容1. 数值计算在Matlab中,我们可以进行各种数值计算,包括基本的加减乘除运算,以及更复杂的矩阵运算和方程求解。
通过编写相应的代码,我们可以实现这些功能。
例如,我们可以使用Matlab计算两个矩阵的乘积,并输出结果。
代码如下:```matlabA = [1 2; 3 4];B = [5 6; 7 8];C = A * B;disp(C);```2. 数据可视化Matlab还提供了强大的数据可视化功能,可以将数据以图表的形式展示出来,更直观地观察数据的规律和趋势。
例如,我们可以使用Matlab绘制一个简单的折线图,来展示某个物体在不同时间下的位置变化。
代码如下:```matlabt = 0:0.1:10;x = sin(t);plot(t, x);xlabel('Time');ylabel('Position');title('Position vs. Time');```3. 图像处理Matlab还可以进行图像处理,包括图像的读取、处理和保存等操作。
我们可以通过Matlab对图像进行增强、滤波、分割等处理,以及进行图像的压缩和重建。
例如,我们可以使用Matlab读取一张图片,并对其进行灰度化处理。
代码如下:```matlabimg = imread('image.jpg');gray_img = rgb2gray(img);imshow(gray_img);```三、实验结果与分析在本次实验中,我们成功完成了数值计算、数据可视化和图像处理等任务。
MATLAB实验报告1.doc
系统仿真与MATLAB实验报告实验一:MATLAB基本操作一、实验目的:1、学习并撑握MA TLAB语言的基本操作方法;2、撑握命令窗口的使用;3、熟悉MATLAB的数据表示、基本运算和程序控制语句;4、熟悉MATLAB程序设计的基本方法。
二、实验编程与测试1.矩阵运算(1)已知A=[1 2;3 4];B=[5 5;7 8];求A^2*B程序:>> A=[1 2;3 4];B=[5 5;7 8];>> C=(A^2)*BC =105 115229 251(2)矩阵除法已知A=[1 2 3;4 5 6;7 8 9];B=[1 0 0;0 2 0;0 0 3];求A/B,A\B程序:>> A=[1 2 3;4 5 6;7 8 9];B=[1 0 0;0 2 0;0 0 3];>> C1=A/BC1 =1.0000 1.0000 1.00004.0000 2.5000 2.00007.0000 4.0000 3.0000>> C2=A\BWarning: Matrix is close to singular or badly scaled.Results may be inaccurate. RCOND = 1.541976e-018.(Type "warning off MATLAB:nearlySingularMatrix" to suppress this warning.)C2 =1.0e+016 *-0.4504 1.8014 -1.35110.9007 -3.6029 2.7022-0.4504 1.8014 -1.3511(3)矩阵的转置及共轭转置已知A=[15+i, 2-i ,1;6*i,4,9-i];求A.’,A’程序:>> A=[15+i,2-i,1;6*i,4,9-i];>> B1=A.'B1 =15.0000 + 1.0000i 0 + 6.0000i2.0000 - 1.0000i 4.00001.0000 9.0000 - 1.0000i>> B2=A'B2 =15.0000 - 1.0000i 0 - 6.0000i2.0000 + 1.0000i 4.00001.0000 9.0000 + 1.0000i(4)使用冒号选出指定元素已知A=[1 2 3;4 5 6;7 8 9];求A中第3列前2个元素;A中所有第2行的元素;程序:>> A=[1 2 3;4 5 6;7 8 9];>> B1=A(1:2,3)B1 =36>> B2=A(2,1:3)B2 =4 5 6(5)方括号[]用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列A =16 2 3 135 11 10 89 7 6 124 14 15 1>> A(:,4)=[]A =16 2 35 11 109 7 64 14 152.多项式(1)求多项式的根程序:>> p=[1 0 -2 -4];>> roots(p)ans =2.0000-1.0000 + 1.0000i-1.0000 - 1.0000i(2)已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4]求矩阵A的特征多项式;求矩阵多项式中未知数为20时的值;把矩阵A作为未知数代入到多项式中;程序:>> A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4];>> b=poly(A)b =1.0000 -6.9000 -77.2600 -86.1300 604.5500>> c=polyval(b,20)c =7.2778e+004y=polyval(b,A)y =1.0e+003 *0.3801 -0.4545 -1.9951 0.4601-1.9951 0.2093 -1.9951 -2.8880-0.4545 -4.8978 0.6046 0.43530.4353 0.0840 -0.4545 -1.1617>> z=polyvalm(b,A)z =1.0e-010 *-0.0591 -0.0913 -0.0712 -0.0662-0.0909 -0.1273 -0.1065 -0.1023-0.0843 -0.1171 -0.0909 -0.0878-0.0523 -0.0777 -0.0621 -0.06033.基本程序设计(1)编写命令文件:计算1+2+…+n<2000时的n值;程序:>> clears=s+i;i=i+1;end>> i=i-1i =63(2)编写函数文件:分别用for和while循环结构编写程序,求2的0到n次幂的和。
北京邮电大学MATLAB实验报告
DSP--MATLAB实验报告实验名称:MATLAB第一次上级实验学生姓名:班级:班内序号:学号:日期:1.实验要求(1) 常用数字信号序列的产生:熟悉Matlab 产生数字信号的基本命令,加深对数字信号概念的理解,并能够用Matlab 产生和绘制出一些常用离散信号序列。
请用Matlab 画出下列序列的波形(-10<n<10):a) δ(n)b) 单位阶跃序列2 u(n-5)c) 矩形序列R(n)d) y(n)=2sin(0.3πn)+ 0.5cos2(0.6πn)(2)加、减、尺度(乘除)和移位是数字信号处理中最基本的算术运算,将上述基本序列进行这些基本运算,得到多个序列构成的组合序列。
(3)请用您的计算机声卡采用一段您自己的声音x(n),长度为45秒,单声道,取样频率44.1kHz,16bit/样值,然后与给定的一段背景音乐y(n) 按下式叠加为一个声音信号z(n):z(n) = 0.7x(n) + 0.3y(n)要求在同一个Figure 中,画出采集声音x(n)、背景音乐y(n)和混音z(n) 的时域波形;2关键算法分析产生δ(n),单位阶跃序列 2 u(n-5),矩形序列R(n),y(n)=2sin(0.3πn)+ 0.5cos2(0.6πn)序列,首先在matlab中新建一个m文件,将各种序列的定义写进去,再在命令窗口中写入命令语句,便可得到。
单位取样序列x=impseq(0,-20,120);n=[-20:120]; >> plot(n,x)单位阶跃序列2 u(n-5) :x=stepseq(5,-20,120),n=[-20:120];plot(n,2*x)矩形序列R(n):x1=stepseq(-10,-10,60),n1=[-10:60],x2==stepseq(10,-10,60),n2=[-10:60],y=x1-x2,n= [-10:60],plot(n,y)y(n)=2sin(0.3πn)+ 0.5cos2(0.6πn):n=[0:0.1:20];x=2*sin(0.3*pi*n)+0.5*cos(2*0.6*pi*n);plot(n,x)加法:δ(n)+ 2 u(n-5):x1=impseq(0,-20,120);n=[-20:120];x2=2*stepseq(5,-20,120),n=[-20:120];y=x1+x2,plot(n,y)减法:δ(n)- 2 u(n-5):x1=impseq(0,-20,120);n=[-20:120]; x2=2*stepseq(5,-20,120),n=[-20:120];y=x1-x2,plot(n,y)乘法: δ(n)- 2 u(n-5): x1=impseq(0,-20,120);n=[-20:120]; x2=2*stepseq(5,-20,120),n=[-20:120];y=x1.*x2,plot(n,y)一个figure中显示多个波形:[y,fs,bits]=wavread('我的声音'),t1=(0:length(y)-1)/fs;[x,fs,bits]=wavread('天空之城'),t2=(0:length(x)-1)/fs;subplot(2,2,1),plot(t1,y);subplot(2,2,2),plot(t2,x);3. 程序运行结果单位取样序列单位阶跃序列2 u(n-5)矩形序列:y(n)=2sin(0.3πn)+ 0.5cos2(0.6πn)::加法:δ(n)+ 2 u(n-5) 乘法: u(n)*R5:移位:一个figure中显示多个波形:4. 总结通过这次实验,我对MATLAB的使用了解了许多,尤其是在对声音和图像的处理方面。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京邮电大学《数字信号处理》Matlab实验学院:班级:姓名:学号:班内序号:实验一【实验要求】实现重叠相加和重叠保留算法,完成线性卷积的分段计算。
【实验原理】一、算法产生背景DFT是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。
对于线性非移变离散系统,可由线性卷积表示时域输入输出关系。
即y(n)=x(n)*h(n)。
通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。
因此,产生了重叠相加法和重叠保留法两种典型的算法,用以快速计算线性卷积,成为了DFT的一个重要应用。
二、算法基本思想1.重叠相加法重叠相加法是将待过滤的信号分割成长为N的若干段,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。
具体算法实现:建立缓存序列,每次输入N点序列,通过计算x(n)和h(n)的循环卷积实现线性卷积运算,将缓存的M-1点序列和卷积结果相加,并输出前N点作为计算结果,同时缓存后M-1点,如此循环,直至所有分段计算完毕,则输出序列y(n)为最终计算结果。
2.重叠保留法重叠保留法相当于将x(n)和h(n)作循环卷积,然后找出循环卷积中相当于线性卷积的部分。
在这种情况下,将序列y(n)分为长为N的若干段,每个输入段和前一段有M-1个重叠点。
此时只需要将发生重叠的前M-1个点舍去,保留重叠的部分并输出,则可获得序列y(n)。
【流程图设计】1.重叠相加法2.重叠保留法【MATLAB源代码】1.重叠相加法(1)function y = ovrlplus (x,h,N) %重叠相加法实现M = length(h); %获得h(n)的长度if N <M %为N选择合适的值保证运算正确N = M+1;endL = M+N-1; %循环卷积与线性卷积结果相同时需要进行运算的最少点数Lx = length(x); %获得x(n)的长度T = floor(Lx/N); %确定分段数T floor 向下取整函数t = zeros(1,M-1); %初始化序列t(n)x = [x,zeros(1,(T+1)*N-Lx)]; %不足的分段补零y = zeros(1,(T+1)*N); %生成输出序列y(n),长度足够长for i=0:1:Txi=i*N+1;x_seg = x(xi:xi+N-1); %选择循环卷积计算时的分段x(n)y_seg = circonvt(x_seg,h,L); %调用循环卷积计算线性卷积y_seg(1:M-1) = y_seg(1:M-1)+t(1:M-1);%完成重叠相加t(1:M-1) = y_seg(N+1:L); %重新对t(n)赋值为保留的后M-1点y(xi:xi+N-1) = y_seg(1:N); %直接输出前N个点endy=y(1:Lx+M-1); %取出最终的输出序列(2)function[y]=circonvt(x1,x2,N)%循环卷积实现if length(x1)>Nerror('N must be>=the length of x1')endif length(x2)>Nerror('N must be>=the length of x1')endx1=[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:NH(n,:)=cirshftt(x2,n-1,N);endy=x1*conj(H');(3)function y=cirshftt(x,m,N)%循环移位实现if length(x)>Nerror('N must be >= the length of x')endx=[x zeros(1,N-length(x))];%补零函数(x(n)的长度小于N,将不够的地方全部补零)n=[0:1:N-1]; n=mod(n-m,N);y=x(n+1);2.重叠保留法(1)function[y]=ovrlpsav(x,h,N)%实现重叠保留的主函数Lenx=length(x);M=length(h);M1=M-1;L=N-M1;h= [h zeros(1,N-M)];x=[zeros(1,M1),x,zeros(1,N-1)];K=floor((Lenx+M1-1)/(L));Y=zeros(K+1,N);for k=0:Kxk=x(k*L+1:k*L+N);Y(k+1,:)=circonvt(xk,h,N);endY=Y(:,M:N)';y=(Y(:))';(2)function[y]=circonvt(x1,x2,N)%循环卷积if length(x1)>Nerror('N must be>=the length of x1')endif length(x2)>Nerror('N must be>=the length of x1')endx1=[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:NH(n,:)=cirshftt(x2,n-1,N);endy=x1*conj(H');(3)function y=cirshftt(x,m,N)%循环移位if length(x)>Nerror('N must be >= the length of x')endx=[x zeros(1,N-length(x))];%补零函数(x(n)的长度小于N,将不够的地方全部补零)n=[0:1:N-1]; n=mod(n-m,N);y=x(n+1);(4)function[XK]=dft(xn,N);%DFT函数n=[0:1:N-1];k=[0:1:N-1];WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;XK=xn*WNnk;【实验结果与分析】1.重叠相加法x1=[1:10]x2=[1,0,-1]ovrlplus (x1,x2,4)2.重叠保留法x1=[1:10]x2=[1,0,-1]ovrlpsav(x1,x2,4)【运算量分析】有限长因果序列x(n)、h(n)的长度分别为Lx和M,直接计算线性卷积y(n),y(n)可视为M个序列的叠加结果,序列长度为Lx,所以每生成一个序列需完成Lx次乘法,共需完成M*Lx次乘法运算。
这M个序列依次向右移动一位故需(Lx-1)*(M-1)次加法运算。
N越大快此算法的运算量相对来说越小,即实现重叠相加法和重叠保留法的运算量节省的越多。
◎结合教材3.5.1节作运算量分析1.重叠相加法分段长度4 10 100 1000 10000序列长度10 0.013151 0.000266 0.018963 0.027378 0.074834100 0.001173 0.000605 0.000319 0.000917 0.010007 1000 0.009936 0.002824 0.00092 0.000746 0.013927 10000 0.074181 0.027121 0.006682 0.00406 0.009922 100000 0.606933 0.265476 0.052852 0.030106 0.048245 1000000 6.033528 2.483526 0.396206 0.246052 0.3338710000000 59.93776 25.10466 3.897444 2.328122 3.2314992.重叠保留法分段长度序列长度4 10 100 1000 1000010 0.000512 0.000225 0.001249 0.000881 0.008454100 0.001014 0.000514 0.000272 0.000836 0.0088021000 0.009297 0.002402 0.000787 0.000687 0.011107 10000 0.05674 0.023194 0.006122 0.003941 0.011083 100000 0.558865 0.216818 0.039175 0.026044 0.042643 1000000 5.221879 2.144089 0.357428 0.236277 0.327539 10000000 52.2464 22.02215 3.593282 2.335725 3.251762 由上表可以看出,同重叠相加法类似,随着数据规模的增大,运算耗时呈线性增长,算法的时间复杂度为O(n),其中n为数据规模。
同样由于分配的缓存空间只由分段长度确定,空间复杂度为O(1)。
综合考察,重叠保留法也具有较好的时间和空间复杂度。
当数据量达到千万量级时,运算延时最少大约为2.335s,可运用于对信号的实时处理。
【问题与分析】本次试验中遇到的主要问题就是不熟悉Matlab软件的使用方法和编程语言,经过认真阅读教科书和课程讲义上的Matlab介绍以及例题分析,终于完成代码编写和实验操作。
实验二周期序列的谱分析【实验要求】利用DFT分析模拟信号()()cos16ax t tπ=之频谱。
一、设定采样周期T并说明原因;由奈奎斯特抽样定理可知,应有f0>=2fmax,取f0=20Hz,可保证抽样后的信号不产生混叠。
f0=20Hz,T0=0.05s,ω=Ω×T=16π×0.05=0.8π.二、若令()cos(16)x n nT π=,确定该序列之周期N 并说明原因;ω=Ω×T=16π×0.05=0.8π, 2π÷ω=2.5,N 取2.5的倍数10。
三、绘制10个周期内()x n 的取值情况; >>n=[0:99];>>x=cos(0.8*pi*n); >>plot(n,x)四、令1()x n 表示()x n 的主值序列,绘制1(())DFT x n ,解释取值情况;>>n=[0:9];>>x1=cos(0.8*pi*n); >>y=fft(x1,10); >>stem(abs(y));主值序列可以反映周期序列的全貌。