基于MATLAB的信号分析与处理汇总
- 格式:doc
- 大小:475.00 KB
- 文档页数:21
课程设计任务书学生姓名: 殷 翔 专业班级: 通信0806 指导教师: 郭志强 工作单位: 信息工程学院 题 目:基于MATLAB 的信号调制与解调 初始条件:(1)MATLAB 软件(2)数字信号处理与图像处理基础知识要求完成的主要任务:(1)已知某消息信号⎪⎩⎪⎨⎧≤≤-≤≤=elset t t t t t m 03/23/23/01)(000以双边幅度调制(DSB-AM )方式调制载波)2cos()(t f t c c π=,所得到的已调制信号记为)(t u ,设s t 15.00=,Hz f c 250=。
试比较消息信号与已调信号,并绘制它们的频谱。
(2)对(1)的DSB-AM 调制信号进行相干解调,并绘出信号的时频域曲线。
(3)对(1)中的信号进行单边带幅度调制(SSB-AM )绘制信号的时频域曲线。
(4)对(1)中的信号进行常规幅度调制(AM ),给定调制指数8.0=a 绘制信号的时频域曲线。
时间安排:第12周:安排任务,分组 第13-14周:设计仿真,撰写报告 第15周:完成设计,提交报告,答辩指导教师签名: 年 月 日系主任(或责任教师)签名:年月日目录摘要 (I)Abstract (II)1.常规双边带幅度调制(DSB-AM)与解调 (1)1.1DSB-AM调制原理与分析 (1)1.2 常规双边带解调原理 (3)2单边带幅度调制(SSB-AM)原理 (5)3常规幅度调制(AM)原理 (6)3.1幅度调制的一般模型 (6)3.2 常规双边带调幅(AM) (7)3.2.1 AM信号的表达式、频谱及带宽 (7)3.2.2 AM信号的功率分配及调制效率 (9)4. 双边幅度调制(DSB-AM)与解调的MATLAB实现 (10)4.1 DSB-AM调制的MATLAB实现 (10)4.2 相干解调 (12)5单边带幅度调制(SSB-AM)的MATLAB实现 (14)6 常规幅度调制(AM)的MATLAB实现 (16)7 小结与收获 (17)8 参考文献 (18)摘要MATLAB是集数值计算,符号运算及图形处理等强大功能于一体的科学计算语言。
Matlab中的脑电图信号处理与频谱分析方法一、引言脑电图(Electroencephalogram,简称EEG)是记录大脑电生理活动的一种非侵入性方法。
在临床和研究中,脑电图被广泛应用于诊断神经系统疾病、研究认知过程等领域。
而Matlab作为一种功能强大的科学计算软件,提供了丰富的工具箱和函数,可以有效地处理和分析脑电图数据。
本文将介绍Matlab中常用的脑电图信号处理方法和频谱分析技术。
二、脑电图信号处理方法1. 清除噪声在进行脑电图信号分析之前,首先需要对原始信号进行预处理,以去除噪声和伪迹。
Matlab提供了多种滤波器函数,如低通滤波器和带通滤波器,可以有效地去除不需要的高频噪声和低频噪声。
2. 分段处理脑电图信号常常是一个连续的时间序列,在某些情况下,可以将信号分成较短的时间段。
这样做有助于分析信号在不同时间段的特性。
Matlab中可以使用窗函数对信号进行分段处理,并通过遍历每个窗口进行连续的分析。
3. 时域分析时域分析是对信号在时间上的变化进行定量描述的方法。
常用的时域分析方法包括计算信号的平均值、方差、峰值和时域波形图等。
在Matlab中,可以使用相应的函数和工具箱进行时域特征提取和可视化,从而实现对脑电图信号的时域分析。
4. 频域分析频域分析是对信号在频率上的变化进行研究和描述的方法。
脑电图信号通常包含不同频率的成分,因此频域分析对于理解信号的特征和性质非常重要。
Matlab提供了多种频谱分析方法,如快速傅里叶变换(FFT)、小波变换(Wavelet Transform)和自相关函数等。
这些函数可以帮助我们从频域的角度来研究脑电图信号,并提取出频率成分的信息。
三、频谱分析方法1. 快速傅里叶变换(FFT)FFT是一种常见的频谱分析方法,可以将信号从时域转换为频域。
通过计算信号的幅度谱和相位谱,我们可以获得信号在不同频率下的能量分布。
Matlab 中的fft函数可以高效地计算快速傅里叶变换,并绘制出脑电图信号的频谱图。
基于MATLAB的信号与系统实验教程第一部分 MATLAB基础第1章 MATLAB环境1.1 MATLAB界面图1.1 MATLAB主界面图1.2 Workspace图1.3 MATLAB.m文件编辑窗口界面1.2 文件类型图1.4 设置路径图1.5 例1-1运行结果1.3 系统和程序控制指令1.4 练习第2章 数据类型与数学运算2.1 数值、变量和表达式2.1.1 数值的记述2.1.2 变量命名规则2.1.3 运算符和表达式2.2 数组、矩阵及其运算2.2.1 复数和复数矩阵2.2.2 数组和矩阵的运算2.2.3 特殊矩阵(Specialized matrices)2.3 关系和逻辑运算2.4 练习第3章 数值计算与符号计算3.1 线性代数与矩阵分析3.1.1 线性代数3.1.2 特征值分解3.1.3 奇异值分解3.1.4 矩阵函数3.2 线性方程组求解3.2.1 确定性线性方程组求解3.2.2 线性最小二乘问题的方程求解3.3 数据分析函数图3.1 例3-4运行结果3.4 符号计算图3.2 数值型与符号型数据转换关系3.5 练习第4章 绘图4.1 基本绘图指令4.1.1 plot的基本调用格式图4.1 例4-1运行结果4.1.2 stem: 离散数据绘制(火柴杆图)图4.2 例4-2运行结果4.1.3 polar: 极坐标图图4.3 例4-3运行结果4.2 各种图形标记、控制指令图4.4 例4-4运行结果4.2.1 图的创建与控制4.2.2 轴的产生与控制4.2.3 分格线(grid)、坐标框(box)、图保持(hold)4.2.4 图形标志4.3 其他常用绘图指令4.3.1 其他类型图的绘制图4.5 例4-5运行结果图4.6 例4-6运行结果简易绘图指令图4.7 例4-7运行结果4.4 练习第5章 SIMULINK5.1 SIMULINK的基本使用方法图5.1 Simulink Library Browser窗口图5.2 Pulse Generator模块的参数设置5.2 SIMULINK模型概念及基本模块介绍图5.4 SIMULINK模型的一般结构5.2.1 常用的sources——信号源模块5.2.2 常用的sinks——信号显示与输出模块图5.5 示波器纵坐标设置对话框图5.6 示波器属性对话框5.2.3 math operations——数学运算单元模块5.2.4 continuous——连续系统模块5.2.5 discrete——离散系统模块5.3 SIMULINK模型的仿真5.3.1 仿真参数设置图5.7 仿真设置对话框5.3.2 建立子系统图5.8 例5-2的SIMULINK模型图5.9 例5-2的子系统模型图5.10 例5-2仿真输出波形5.4 练习第6章 M函数和工具箱6.1 M函数6.2 工具箱图6.1 演示程序中的工具箱(Toolbox)使用帮助6.3 练习第7章 MATLAB实用技术遴选7.1 图形用户界面设计7.1.1 设计原则与设计步骤7.1.2 界面与控件介绍图7.1 标准菜单样式7.1.3 GUI实例分析。
MATLAB中的多通道信号分析与滤波技巧概述:多通道信号是现实世界中常见的一种信号类型,尤其在医学、信号处理和通信领域中。
MATLAB作为一种功能强大的科学计算软件,提供了丰富的工具和函数来分析和处理多通道信号。
本文将介绍一些在MATLAB中实现多通道信号分析与滤波的常用技巧。
1. 多通道信号的表示和处理多通道信号可以以多种方式表示,最常见的是矩阵形式,其中每一行代表一个通道,每一列代表一个采样点。
在MATLAB中,可以使用二维数组来表示多通道信号。
例如,假设有一个3通道的音频信号,可以使用一个大小为3xN的矩阵来表示,其中N是采样点数。
对于多通道信号的处理,MATLAB提供了很多函数和工具箱。
例如,可以使用矩阵运算、元素级操作和逐个采样的方式来处理多通道信号。
此外,可以使用MATLAB的信号处理工具箱中的函数来进行频谱分析、时频分析、滤波和特征提取等操作。
2. 多通道信号的频谱分析频谱分析是分析多通道信号频率特性的重要方法。
MATLAB提供了多种函数来实现频谱分析,例如fft和psd。
可以使用这些函数计算多通道信号的频谱,并可视化为功率谱密度图、频谱图或频谱瀑布图等形式。
在进行频谱分析时,需要注意信号采样率、窗口函数和频谱分辨率等参数的设置。
可以通过调整这些参数来获得更精确的频谱分析结果。
此外,对于包含多通道的信号,可以分别对每个通道进行频谱分析,或者将多通道信号进行合并后再进行频谱分析。
3. 多通道信号的时频分析与频谱分析类似,时频分析可以帮助我们了解多通道信号的时域和频域特性,并揭示出其中的变化与关联。
MATLAB中的时频分析工具箱提供了一系列函数和工具来进行时频分析,如短时傅里叶变换(STFT)和连续小波变换(CWT)等。
时频分析可以用于分析非平稳信号中的瞬态事件、频率变化和相位变化等特性。
在进行时频分析时,可以选择不同的分辨率和窗口函数,以充分捕捉信号变化的细节。
此外,可以使用多通道信号的时频分析结果来研究不同通道之间的相关性和相互作用。
如何使用Matlab进行信号处理和滤波信号处理和滤波在工程领域中扮演着重要的角色,它们可以帮助我们从一系列的数据中提取有用的信息,并消除噪声。
Matlab作为一种强大的工具,提供了丰富的函数和工具箱,可以方便地进行信号处理和滤波。
本文将介绍如何使用Matlab进行信号处理和滤波的基本方法,并使用实例进行演示。
一、Matlab的信号处理工具箱Matlab的信号处理工具箱是一个强大的工具集,它包含了许多用于处理各种类型信号的函数和算法。
通过引入信号处理工具箱,我们可以方便地处理音频、图像和视频信号,并进行频域分析、滤波和解调等操作。
在Matlab中,可以使用命令"toolbox"来查看已安装的工具箱,对于信号处理,我们需要确保已经安装了"Signal Processing Toolbox"。
如果没有安装,可以通过访问Matlab官方网站下载并安装。
二、信号处理的基本操作1. 读取和显示信号在进行信号处理之前,首先需要将信号加载进Matlab中。
可以使用函数"audioread"来读取音频信号,例如读取一个.wav格式的音频文件:```[x,Fs] = audioread('audio.wav');```其中,x是音频信号的数据,Fs是信号的采样率。
读取完成后,可以使用函数"soundsc"来播放信号,并使用函数"plot"来绘制信号的波形图:```soundsc(x,Fs);plot(x);```2. 频谱分析频谱分析可以帮助我们了解信号的频率特性。
在Matlab中,可以使用函数"fft"进行快速傅里叶变换(FFT),将信号从时域转换到频域。
例如,对于上文中读取的音频信号x,可以使用以下代码计算其频谱:```X = fft(x);```频谱的结果是一个复数向量,表示信号在不同频率上的幅值和相位。
一、用MatLab完成三种不同信号的产生、合成或分解,时域波形分析(峰值,峰峰值,有效值,平均t=linspace(0,5*pi,65000); %在从0到2*pi取15000个点y1=20*sin(2*pi*t); %任给一正弦信号subplot(3,1,1);plot(t,y1);axis ([0 2*pi -25 25]); %画时域波形图max1=max(y1) %峰值vpp1=max(y1)-min(y1) %峰峰值avg1=mean(y1) %平均值rms1=norm(y1)/sqrt(length(y1)) %均方根值(有效值)title('正弦波')y2=20*square(2*pi*t,50); %任给一方波信号subplot(3,1,2);plot(t,y2);axis ([0 2*pi -25 25]); %画时域波形图max2=max(y2) %峰值vpp2=max(y2)-min(y2) %峰峰值avg2=mean(y2) %平均值rms2=norm(y2)/sqrt(length(y2)) %均方根值(有效值)title('方波')y3=20*sawtooth(t,0.5); %任给一三角波信号subplot(3,1,3);plot(t,y3);axis ([0 5*pi -25 25]); %画时域波形图max3=max(y3) %峰值vpp3=max(y3)-min(y3) %峰峰值avg3=mean(y3) %平均值rms3=norm(y3)/sqrt(length(y3)); %均方根值(有效值)title('三角波')figuref1=4*cos(t)/(pi*pi);f2=4*cos(3*t)/(pi*pi*9);f3=4*cos(5*t)/(pi*pi*25);f4=4*cos(7*t)/(pi*pi*49);f=0.5*(-sawtooth(t,0.5)+1); %三角波的分解subplot(5,1,1),plot(t,f);title('三角波') %画三角波subplot(5,1,2),plot(t,f1);title('三角波的基波') %画基波subplot(5,1,3),plot(t,f2);title('三角波三次谐波') %画三次谐波subplot(5,1,4),plot(t,f3);title('三角波五次谐波') %画五次谐波subplot(5,1,5),plot(t,f4);title('三角波七次谐波') %画七次谐波legend('三角波的分解')figuref=0.5*(-sawtooth(t,0.5)+1); %三角波的合成f1=0.5+4*cos(t)/(pi*pi);f2=0.5+4*cos(t)/(pi*pi)+4*cos(3*t)/(pi*pi*9);f3=0.5+4*cos(t)/(pi*pi)+4*cos(3*t)/(pi*pi*9)+4*cos(5*t)/(pi*pi*25);f4=0.5+4*cos(t)/(pi*pi)+4*cos(3*t)/(pi*pi*9)+4*cos(5*t)/(pi*pi*25)+4*co s(7*t)/(pi*pi*49);subplot(2,2,1),plot(t,f1);title('三角波基波')subplot(2,2,2),plot(t,f2);title('三角波基波+三次谐波')subplot(2,2,3),plot(t,f3);title('三角波+三次谐波+五次谐波')subplot(2,2,4),plot(t,f4);title('三角波+三次谐波+五次谐波+七次谐波')legend('三角波的合成')值,均方根值等)二、用MatLab进行三种不同信号频谱分析(可选择功率谱,幅频相频谱,实频虚频)和相关分析(可选择自相关,互相关)Fs=5120; % 设定采样频率dt=1.0/Fs;N=1024; %采样点数T=dt*N; %设置常量t=linspace(0,T,N); %在从0到T取N个点y=50*sin(2*pi*50*t); %任给一正弦信号subplot(3,3,1);plot(t,y);title('50sin(2*pi*50*t)的时域波形图'); %画时域波形图subplot(3,3,2);yy=fft(y,N); %对信号进行快速傅里叶变换P=2*abs(yy)/Nf=linspace(0,Fs,N); %取幅值的频率plot(f,P);xlabel('频率(Hz)');ylabel('幅值');title('50sin(2*pi*50*t)的幅值谱'); %画幅值谱axis([0 500 0 55])subplot(3,3,3);anglex=angle(yy)*180/pi; %求幅角plot(f,anglex);xlabel('频率(Hz)');ylabel('相位(度)')title('50sin(2*pi*50*t)的相位谱'); %画相位谱axis([0 100 -200 200])subplot(3,3,4);plot(f,real(yy));xlabel('频率(Hz)');ylabel('实部'); %画实部谱title('50sin(2*pi*50*t)的实部谱');axis([0 500 -500 500])subplot(3,3,5);plot(f,imag(yy));xlabel('频率(Hz)');ylabel('虚部'); %画虚部谱title('50sin(2*pi*50*t)的虚部谱');axis([0 500 -30000 5000])subplot(3,3,6);plot(f,P.^2);xlabel('频率(Hz)');ylabel('功率'); %画功率谱title('50sin(2*pi*50*t)的功率谱');axis(*************])y1=50*cos(2*pi*50*t); %任给一同频率余弦信号subplot(3,3,7);plot(t,y1); %画时域波形图title('50*cos(2*pi*50*t)的时域波形图');subplot(3,3,8);s=xcorr(y); %正弦信号的自相关函数x1=linspace(0,2*T,2*N-1);plot(x1,s);xlabel('频率(Hz)'); %画自相关函数图像title('正弦信号的自相关函数');subplot(3,3,9);s1=xcorr(y,y1); %正余弦信号的互相关函数x1=linspace(0,2*T,2*N-1);plot(x1,s1);xlabel('频率(Hz)'); %画互相关函数图像title('正余弦信号的互相关函数');figurey2=50*sinc(2*pi*50*t); %任给一sinc函数信号subplot(4,2,1);plot(t,y2); %画时域波形图title('50sinc(2*pi*50*t)的时域波形图');axis([0 0.18 -20 50])subplot(4,2,2);Pyy=fft(y2,N); %对信号进行快速傅里叶变换P=abs(Pyy)/Nf=linspace(0,Fs,N); %取复数形式的幅值的频率plot(f,P); %画幅值谱xlabel('频率(Hz)');ylabel('幅值');title('50sinc(2*pi*50*t)的幅值谱');axis([0 500 0 1])anglex=angle(Pyy)*180/pi; %求幅角plot(f,anglex); %画相位谱xlabel('频率(Hz)');ylabel('相位(度)')title('50sinc(2*pi*50*t)的相位谱');axis([0 1000 -100 10])subplot(4,2,4);plot(f,real(Pyy));xlabel('频率(Hz)');ylabel('实部'); %画实部谱title('50sinc(2*pi*50*t)的实部谱');axis([0 500 -100 550])subplot(4,2,5);plot(f,imag(Pyy)); %画虚部谱xlabel('频率(Hz)');ylabel('虚部');title('50sin(2*pi*50*t)的虚部谱');axis([0 500 -700 100])subplot(4,2,6);plot(f,P.^2); %画功率谱xlabel('频率(Hz)');ylabel('功率');title('50sinc(2*pi*50*t)的功率谱');axis([0 500 0 1])subplot(4,2,7);s=xcorr(y2); %sinc信号的自相关函数x1=linspace(0,2*T,2*N-1);plot(x1,s); %画自相关函数图像xlabel('频率(Hz)');title('sinc信号的自相关函数');subplot(4,2,8);s1=xcorr(y,y1); %sinc信号与余弦信号的自相关函数x1=linspace(0,2*T,2*N-1);plot(x1,s1); %画互相关函数图像xlabel('频率(Hz)');title('sinc信号与余弦信号的自相关函数');figurey3=20*square(2*pi*50*t,50); %任给一方波信号subplot(4,2,1);plot(t,y3); %画时域波形图title('20*square(2*pi*50*t,50)的时域波形图');axis([0 0.1 -25 25])subplot(4,2,2);Pyy=fft(y3,N); %对信号进行快速傅里叶变换P=abs(Pyy)/N;f=linspace(0,Fs,N); %取幅值的频率plot(f,P); %画幅值谱xlabel('频率(Hz)');ylabel('幅值');title('20*square(2*pi*50*t,50)的幅值谱')axis([0 2000 -3 15])anglex=angle(Pyy)*180/3.14; %求幅角plot(f,anglex); %画相位谱xlabel('频率(Hz)');ylabel('相位(度)')title('20*square(2*pi*50*t,50)的相位谱');axis([0 2000 -200 200])subplot(4,2,4);plot(f,real(Pyy)); %画实部谱xlabel('频率(Hz)');ylabel('实部');title('20*square(2*pi*50*t,50)的实部谱');axis([0 2000 -400 500])subplot(4,2,5);plot(f,imag(Pyy)); %画虚部谱xlabel('频率(Hz)');ylabel('虚部');title('20*square(2*pi*50*t,50)的虚部谱');axis([0 2000 -15000 1000])subplot(4,2,6);plot(f,P.^2); %画功率谱xlabel('频率(Hz)');ylabel('功率');title('20*square(2*pi*50*t,50)的功率谱');axis([0 2000 -30 200])subplot(4,2,7);s=xcorr(y3); %方波信号的自相关函数x1=linspace(0,2*T,2*N-1);plot(x1,s); %画自相关函数图像xlabel('频率(Hz)');title('方波信号的自相关函数');subplot(4,2,8);s1=xcorr(y,y3); %方波与正弦信号的互相关函数x1=linspace(0,2*T,2*N-1);plot(x1,s1);xlabel('频率(Hz)');title('方波与正弦信号的互相关函数'); %画互相关函数图像。
使用Matlab进行地震信号处理和振动分析引言地震信号处理和振动分析是地球科学中非常重要的研究领域。
随着计算机技术的发展,利用计算机编程语言进行数据处理和分析已成为地震学和工程地震学的常用方法。
在本文中,将介绍如何使用Matlab进行地震信号处理和振动分析。
一、Matlab简介Matlab是一种强大的科学计算软件,广泛应用于各个领域,包括地震学。
它具有丰富的函数库和图形化界面,提供了各种数据处理和分析工具,非常适合用于地震信号处理和振动分析。
二、地震信号处理在地震学中,地震信号通常是通过地震仪器记录的地震波形数据。
地震信号处理的目标是从原始数据中提取地震波形特征,如到达时间、波形振幅、频率等。
Matlab提供了多种处理方法和函数,方便地进行地震信号的滤波、增益校正、相位校正等操作。
1. 地震信号滤波地震信号通常包含各种频率分量,包括低频、中频和高频分量。
为了分析和识别地震事件,需要对地震信号进行滤波,去除干扰信号并突出地震信号的特征。
Matlab提供了多种滤波函数,如低通滤波、高通滤波、带通滤波等,可以根据需求选择适合的滤波方法。
2. 特征提取地震波形中的各种特征包含了地震事件的重要信息,如震源距离、震级、震中位置等。
Matlab提供了多种特征提取方法和函数,可以从地震波形数据中提取到达时间、波形振幅、频率等特征,并帮助地震学家进行地震事件的分析和研究。
三、振动分析振动分析是工程地震学中的一项重要任务,旨在研究结构在地震或其他振动作用下的响应和受力。
通过对结构振动的分析,可以评估结构的安全性并制定相应的安全标准。
Matlab提供了多种振动分析方法和函数,方便地进行结构的模态分析、响应谱分析等。
1. 结构模态分析结构的模态分析是指在预定边界条件下,确定结构的固有频率、振型和振动模态。
利用Matlab可以进行结构的模态分析,并绘制模态图,有助于工程师评估结构的动力性能和稳定性。
2. 结构响应谱分析结构响应谱分析是指通过计算结构在地震作用下的响应谱,来评估结构的受力性能和安全性。
应用MATLAB对信号进行频谱分析及滤波频谱分析和滤波是信号处理中常用的技术,可以帮助我们了解信号的频率特性并对信号进行去噪或增强。
MATLAB是一个强大的数学计算和工程仿真软件,提供了各种工具和函数用于频谱分析和滤波。
频谱分析是通过将信号在频域上进行分解来研究信号的频率特性。
MATLAB提供了几种进行频谱分析的函数,包括FFT(快速傅里叶变换)、periodogram和spectrogram等。
下面将以FFT为例,介绍如何使用MATLAB进行频谱分析。
首先,我们需要先生成一个信号用于频谱分析。
可以使用MATLAB提供的随机信号生成函数来生成一个特定频率和幅度的信号。
例如,可以使用以下代码生成一个包含两个频率成分的信号:```MATLABFs=1000;%采样率t=0:1/Fs:1;%时间向量,从0秒到1秒,采样率为Fsf1=10;%第一个频率成分f2=50;%第二个频率成分A1=1;%第一个频率成分的幅度A2=0.5;%第二个频率成分的幅度x = A1*sin(2*pi*f1*t) + A2*sin(2*pi*f2*t);```上述代码生成了一个采样率为1000Hz的信号,包含10Hz和50Hz两个频率的成分。
接下来,我们可以使用MATLAB的FFT函数对信号进行频谱分析,并将频谱绘制出来。
FFT函数将信号从时域转换到频域,并返回频谱幅度和频率信息。
以下是使用FFT函数对上述生成的信号进行频谱分析的代码:```MATLABN = length(x); % 信号长度X = abs(fft(x))/N; % 计算FFTf=(0:N-1)*(Fs/N);%计算频率坐标plot(f,X)xlabel('频率(Hz)')ylabel('幅度')title('信号频谱')```上述代码中,我们首先计算FFT并将结果除以信号长度,以得到正确的幅度值。
然后,我们计算频率坐标,并将频谱幅度与频率绘制出来。
如何在Matlab中进行信号频谱分析一、引言信号频谱分析是一种重要的信号处理技术,它可以帮助我们理解信号的频率特性和频谱分布。
在Matlab中,有多种方法可以用来进行信号频谱分析,本文将介绍其中几种常用的方法。
二、时域分析1. 快速傅里叶变换(FFT)快速傅里叶变换(FFT)是最常用的频谱分析工具之一。
在Matlab中,可以使用fft函数对信号进行FFT分析。
首先,将信号数据传入fft函数,然后对结果进行处理,得到信号的频谱图。
通过分析频谱图,我们可以了解信号的频率成分和频谱分布。
2. 窗函数窗函数可以帮助我们减小信号分析过程中的泄漏效应。
在Matlab中,可以使用hamming、hanning等函数生成窗函数。
通过将窗函数乘以信号数据,可以减小频谱中的泄漏效应,得到更准确的频谱图。
三、频域分析1. 功率谱密度(PSD)估计功率谱密度(PSD)估计是一种常见的频域分析方法,用来估计信号在不同频率上的功率分布。
在Matlab中,可以使用pwelch函数进行PSD估计。
pwelch函数需要输入信号数据和采样频率,然后输出信号的功率谱密度图。
2. 自相关函数自相关函数可以帮助我们了解信号的周期性。
在Matlab中,可以使用xcorr函数计算信号的自相关函数。
xcorr函数需要输入信号数据,然后输出信号的自相关函数图。
四、频谱图绘制与分析在进行信号频谱分析后,我们需要将分析结果进行可视化。
在Matlab中,可以使用plot函数绘制频谱图。
通过观察频谱图,我们可以进一步分析信号的频率成分和频谱特性。
可以注意以下几点:1. 频谱图的横轴表示频率,纵轴表示幅度。
通过观察频谱图的峰值位置和幅度大小,可以了解信号中频率成分的分布情况。
2. 根据信号的特点,选择合适的分析方法和参数。
不同的信号可能需要采用不同的分析方法和参数,才能得到准确的频谱分布。
五、实例分析为了更好地理解如何在Matlab中进行信号频谱分析,以下是一个简单的实例分析。
基于Matlab/Simulink的信号与线性系统分析摘要:本文主要介绍了Matlab/Simulink仿真工具在信号与线性系统分析方面的应用,并给出了实例。
引言:仿真技术是以相似原理、系统技术、信息技术以及仿真应用领域的有关技术为基础,以计算机系统或应用有关的物理效应设备及仿真器为根据,利用模型对系统进行研究的一门多学科的综合性技术。
目前,随着仿真技术的迅猛发展,其应用已经渗透到工程技术的各个领域。
电气工程及其自动化专业类教学涉及到电机学、自动控制理论、电力拖动、微型计算机技术和电力电子技术等学科的广泛内容,既要求学生能掌握电气工程的基础理论,又要求能掌握电气工程类专业研究问题的方法,并且应具备较强的动手实践能力。
因此,学会运用一定的仿真软件和计算机技术,能使我们更系统地掌握专业的基本理论和控制系统的设计思想和方法。
1、Matlab/Simulink简介Simulink是Matlab提供的视线动态系统建模和仿真的软件包,是Matlab相对独立的重要组成部分。
Simulink的突出特点是支持图形用户界面(GUI),模型由模块组成的框图来表示。
同时Simulink自带模块库,提供大量的基本功能模块,通过简单地单击和拖动鼠标的动作就能完成建模工作,在仿真中只需把精力放在具体算法的实现上即可。
使用Simulink分析信号与系统的优点2、基于Simulink的信号与线性系统分析2.1信号的处理2.1.1对信号进行快速傅里叶变换Simulink模型中可以用如下模块实现快速傅里叶变换,值得注意的是,FFT模块不能直接连接Scope模块,需使用Spectrum Scope模块。
图1-1 Simulink的FFT模块和Spectrum Scope模块例如:Sine Wave1模块和FFT模块采用默认设置。
Spectrum Scope模块:show scope properties选项下,点选Buffer input;show axis properties选项下属性Frequency range 选择[-Fs/2…Fs/2]。
Matlab对语音信号的处理及分析摘要:Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波,时域和频谱分析等,他的信号处理与分析工具箱为语音信号的处理和分析提供了十分丰富的功能函数,利用这些函数可以快捷而又方便地完成语音信号的处理和分析。
关键词:Matlab、语音信号、数字滤波、信号处理Matlab for speech signal processing and analysisZhu hao(College of Physics and Electronic Engineering Information Wenzhou university)Abstract:Matlab language is a data analysis and processing functions are very powerful computer application software, sound files which can be transformed into discrete data files, then use its powerful ability to process the data matrix operations, such as digital filtering,when domain and frequency domain analysis and so on. Its signal processing and analysis toolkit for voice signal analysis provides a very rich feature function, use of these functions can be quick and convenient features complete voice signal processing and analysis.Keywords: Matlab,Voice Signal,Digital filtering,The signal processing正文:1.引言随着社会文化的进步和科学技术的发展,人类开始进入了信息化时代,用现代手段研究语音处理技术,使人们能更加有效地产生、传输、存储、和获取语音信息,这对于促进社会的发展具有十分重要的意义,因此,语音信号处理正越来越受到人们的关注和广泛的研究。
matlab数字信号处理案例
1.语音信号处理:通过MATLAB分析语音信号的声音频谱,提取语音的基频、形态频谱、共振峰等特征,实现语音的录取、编码、压缩、分割等处理。
2.图像信号处理:利用MATLAB进行图像信号的去噪、增强、分割、识别等处理,如对卫星遥感图像进行分析,提取特定地物的信息,对医学图像进行病灶检测和诊断等。
3.生物信号处理:通过收集并处理电生理信号来分析生物系统的功能和活动,如心电信号的特征提取和诊断,脑电信号的频谱分析和事件相关电位分析,生物信号的模拟和仿真等。
4.控制系统信号处理:MATLAB可用于控制系统信号的建模和仿真,如对机器人和无人车等的运动控制、对“指挥舞台”的音频控制等。
5.通信信号处理:MATLAB可用于模拟通信信号的传输过程,通过配合不同的信号处理算法来处理数字信号,如对调制信号进行解调,对多天线通信系统进行信号检测、捕捉、译码等。
6.物理信号处理:例如遥测信号处理、光学信号处理、雷达信号处理等,将MATLAB与其他物理类型软件相结合,根据特定场景下信号处理的需要,选择相应的处理算法完成信号的分析和识别。
利用matlab进行信号和系统的复频域分析心得
利用MATLAB进行信号和系统的复频域分析是非常常见的。
下面是一些心得和步骤供参考:
1. 导入信号数据:首先,你需要将信号数据导入到MATLAB中。
这可以通过多种方式实现,例如读取文件或直接生成信号矩阵。
2. 选择合适的频域分析方法:根据你的需求和信号类型,选择合适的频域分析方法。
常见的方法包括傅里叶变换、快速傅里叶变换(FFT)、离散傅里叶变换(DFT)等。
3. 执行频域分析:使用MATLAB提供的相应函数,如fft()或fftshift()来执行频域分析。
这将为你提供信号的频谱信息。
4. 绘制频谱图:使用MATLAB的绘图函数,如plot()或stem(),将频谱数据可视化为频谱图。
你可以选择线性频谱图或对数频谱图,具体取决于信号特性和需求。
5. 分析频谱信息:根据频谱图,你可以分析信号的频率分量、幅度特性以及相位特性。
对于系统分析,你还可以计算系统的传递函数。
6. 系统设计和优化:根据频域分析结果,你可以对系统进行设计和优化。
例如,你可以确定降噪滤波器的截止频率,或者针对特定的频率范围进行信号增强。
需要注意的是,MATLAB提供了丰富的信号处理和系统分析工具箱,可以帮助你更轻松地完成复频域分析任务。
同时,请确保使用合法授权的软件和工具,遵守中国法律政策。
数字信号处理matlab数字信号处理(Digital Signal Processing,DSP)是一种处理离散时间信号的方法,这些信号通常通过模拟信号进行数字化获得。
MATLAB是一个广泛使用的科学计算软件,可用于数字信号处理。
在MATLAB中进行数字信号处理的基本步骤通常包括:1.数据导入和预处理:MATLAB中可以方便地导入数字信号,包括音频、图像等。
然后可以对信号进行一些预处理操作,例如滤波、降噪等。
2.信号分析和特征提取:在信号预处理之后,可以进行更深入的分析,如频率分析、功率谱分析、相关性分析等。
此外,还可以提取信号的特征,例如频率、幅值、相位等。
3.信号处理算法实现:在MATLAB中,可以使用各种内置函数和工具箱来实现各种数字信号处理算法,如滤波器设计、频域变换、调制解调等。
4.结果可视化:MATLAB提供了强大的绘图和可视化工具,可以方便地显示信号处理的结果。
以下是一个简单的MATLAB代码示例,展示了如何读取一个音频文件并计算其功率谱:```matlab%读取音频文件[signal,fs]=audioread('filename.wav');%转换为单通道(如果需要)if size(signal,2)==2signal=sum(signal,2);end%计算功率谱[Pxx,F]=periodogram(signal,[],length(signal),fs);%绘制功率谱图figure;plot(F,10log10(Pxx/max(Pxx)));xlabel('Frequency(Hz)');ylabel('Power/Frequency(dB/Hz)');title('Power Spectrum');```请注意,这只是一个非常基础的示例。
实际应用中,数字信号处理可能涉及更复杂的算法和数据处理。
基于MATLAB的信号分析与处理第一节MA TLAB快速入门一MATLAB操作入门MATLAB是MATrix LABoratory (矩阵实验室)的缩写,是由美国MathWorks公司于20世纪80年代初推出的一套以矩阵计算为基础的、适合多学科、多种工作平台的功能强劲的大型软件.MATLAB将数值计算、可视化和编程功能集成在非常便于使用的环境中,具有编程效率高、用户使用方便、扩充能力强、移植性好等特点.经过MathWorks公司的不断完善,目前MATLAB已经发展成为国际上最优秀的高性能科学与工程计算软件之一.1、启动(Windows操作平台)双击桌面上MA TLAB的快捷方式或程序里MA TLAB选项即可启动MATLAB.2、MATLAB环境启动MATLAB后对话框如下图(图1),它大致包括以下几个部分:图11)菜单栏------单击即可打开相应的菜单;在MATLAB 6.5主窗口的菜单栏,共包含File、Edit、View、Web、Window和Help 6个菜单项。
(1) File菜单项:File菜单项实现有关文件的操作。
“New”命令下的“M-file”选项表示新建一个M文件,该命令将打开MATLAB的M文件编辑/调试器。
通过M文件编辑/调试器,用户可以创建自己的M文件,也可以编辑已有的M文件并调试MATLAB 程序。
“Figure”选项表示新建一个图形窗口。
(2) Edit菜单项:Edit菜单项用于命令窗口的编辑操作。
(3) View菜单项:View菜单项用于设置MATLAB集成环境的显示方式。
(4) Web菜单项:Web菜单项用于设置MATLAB的Web操作。
(5) Window菜单项:主窗口菜单栏上的Window菜单,只包含一个子菜单Close all,用于关闭所有打开的编辑器窗口,包括M-file、Figure、Model和GUI窗口。
(6) Help菜单项:Help菜单项用于提供帮助信息。
2)工具栏------使用它们能使操作更快捷;3)Command Window(命令窗口)------用来输入和显示计算结果,其中符号“>>”表示等待用户输入;在命令提示符后键入命令并按下回车键后,MATLAB就会解释执行所输入的命令,并在命令后面给出计算结果。
在命令窗口中实现管理功能的常用命令有:>>cd 显示当前工作目录;>>dir 显示当前工作目录或指定目录下的文件;>>clc 清除命令窗口中的所有内容;>>clf 清除图形窗口;>>quit(exit) 退出MATLAB;>>type test 在命令窗口中显示文件test.m的内容>>delete test 删除文件test.m;>>which test 显示test.m的目录;>>what 显示当前目录或指定目录下的M、MA T、MEX文件.4)Workspace(工作区窗口)------存储着命令窗口输入的命令和所有变量值;工作空间是MATLAB用于存储各种变量和结果的内存空间。
在该窗口中显示工作空间中所有变量的名称、大小、字节数和变量类型说明,可对变量进行观察、编辑、保存和删除。
5)Current Directory(当前目录选择窗口)------显示当前路径.3、MATLAB的帮助系统MATLAB的帮助系统提供帮助命令、帮助窗口等帮助方法.(1)帮助命令help假如准确知道所要求助的主题词,或指令名称,那么使用help命令是获得在线帮助的最简单有效的途径. 例如要获得关于函数sin 使用说明的在线求助,可键入命令>> help sin将显示SIN Sine.SIN(X) is the sine of the elements of X.Overloaded methodshelp sym/sin.m(2)帮助窗口(图2)帮助窗口给出的信息按目录编排,比较系统,便于浏览与之相关的信息,其内容与帮助命令给出的一样,进入帮助窗口的方法有:♦选取帮助菜单里的“MATLAB Help”或键入命令“helpwin”;♦双击菜单条上的问号按钮.图2第二节变量与函数一、变量变量是任何程序设计语言的基本要素之一,MATLAB语言当然也不例外.与一般常规的程序设计语言不同的是,MA TLAB语言并不要求对所使用的变量进行事先声明,也不需要指定变量类型,它会自动根据赋予变量的值或对变量进行的操作来确定变量的类型并为其分配内存空间.在赋值过程中,如果变量已存在,MATLAB将使用新值代替旧值,并以新的变量类型代替旧的变量类型.MATLAB中变量的命名规则是:1、变量名区分大小写;2、变量名的长度不超过31位,第31个字符之后的字符将被忽略;3、变量名必须以字母开头,之后可以是任意字母、数字或下划线,变量名中不允许使用标点符号.MATLAB中有一些预定义的变量,这些特殊的变量称为常量.MATLAB语言中的常量在MA TLAB语言中,定义变量时应避免与常量名相同,以免改变常量的值.与其他程序设计语言相同,MA TLAB语言中也存在变量作用域的问题.在未特殊说明的情况下,MA TLAB语言将所识别的一切变量视为局部变量,即仅在其调用的函数内有效.若要定义全局变量,应对变量进行声明,即在该变量前加关键字global.二、运算符号及标点符号运算符号:1、算术运算符(表1)表12、关系运算符(表2)3、逻辑运算符(表3)表3标点符号:MATLAB中标点符号的含义是:1、在命令窗口中输入一个MATLAB语句(语句的一般形式为:变量=表达式),如果语句后为逗号或无标点符号,则在命令窗口中显示该语句的计算结果;如果语句后为分号,MATLAB 只进行计算,不在命令窗口中显示计算结果.如果要查看计算结果,只需要在命令窗口中输入变量名按回车键或打开工作空间双击选中的变量即可.2、在MATLAB的命令窗口中输入一个表达式或利用MATLAB进行编程时,如果表达式太长,可以用续行符号“…”将其延续到下一行.3、编写MATLAB程序时,通常利用符号“%”对程序或其中的语句进行注释.三、函数MATLAB语言中最基本最重要的成分是函数.一个函数由函数名、输入变量和输出变量组成.同一个函数,不同数目的输入变量和不同数目的输出变量,均代表不同的含义.这不仅丰富了MA TLAB的函数功能,而且大大减少了需要的磁盘空间,使得MATLAB编写的程序简单而且高效.MATLAB的函数,按照用途,可以分为四类:标量函数、向量函数、矩阵函数和图形函数.1、标量函数:标量函数作用于标量,一般用于简单的数值计算.常用的标量函数有三角函数、指数对数函数、复数函数、截断函数和求余函数等.三角函数:sin、cos、tan、cot、sec、csc、asin、acos、atan、acot、asec、acsc、sinh、cosh、tanh、asinh、acosh、atanh;指数和对数函数:exp(以e为底的指数函数)、pow2(以2为底的指数函数)、sqrt(正的平方根函数)、realsqrt(正的平方根函数,若输入不是正数则报错)、nthroot(n次方根函数)、log(自然对数函数)、reallog(自然对数函数,若输入不是正数则报错)、log10(以10为底的对数函数)、log2(以2为底的对数函数);复数函数:abs(绝对值或复数模)、angle(复数的相角或幅角)、conj(复数共轭)、real(复数实部)、imag(复数虚部)、complex(用实部和虚部构造复数)、isreal(判断是否为实数矩阵).例如:c=complex(a,b) 将根据的a、b构造复数c, 复数c的实部为a,复数c的虚部为b.>>a=[1 2;3 4];b=[5 6;7 8]>> c=complex(a,b)截断和求余函数:mod(除法求余数,与除数同号)、rem(除法求余数,与被除数同号)、sign(符号函数)、fix(朝零方向取整函数)、floor(向负无穷方向取整函数)、ceil(向正无穷方向取整函数)、round(四舍五入函数)、rats(有理逼近函数).当一个标量函数作用于向量或矩阵时,是这个标量函数作用于这个向量或矩阵的每一个元素.这个功能将大大方便我们处理成批的数据.2、向量函数:MATLAB中有些函数只有当它们作用于行向量或列向量时才有意义,称为向量函数.常用的向量函数:max(最大值)、min(最小值)、sum(和)、length(长度)、mean(平均值)、median(中数)、prod(乘积)、sort(从小到大排列).例如:>>x=[0.6833,0.2126,0.8392,0.6288,0.1338,0.2071,0.6072,0.6299,0.3705,0.5751];>>a=max(x), b=min(x),c=mean(x),d=median(x)当一个向量函数作用于一个矩阵时会产生一个行向量,这个行向量的每个元素是向量函数作用于矩阵相应列向量的结果.在MA TLAB的统计工具箱中,我们还会学习到许多向量函数.3、矩阵函数:MA TLAB中有大量的矩阵函数,从其作用来看,可以分为构造矩阵的函数和进行矩阵计算的函数.4、基本二维图形函数绘制二维图形时最常用的是plot函数。
(1)plot(y):当只有一个参数时,plot以该参数的值为纵坐标,横坐标从1开始自动赋值向量【1 2 3 。
】,向量的方向和长度与参数y相同。
例如y=[0 1 2 1 0];plot(y)(2) plot(x,y):这是最常用的形式。
x为横坐标向量,y为纵坐标向量,例如t=1:0.2:10;y=sin(t);plot(t,y)(3)对数坐标曲线三个函数:semilog semilogx loglog可以绘制二维对数坐标曲线,这几个函数的用法与plot函数相同。
例如t=0:0.1:2*pi;y=sin(t);semilogx(t,y);grid on绘制的横坐标为对数坐标,并用grid on命令为图形窗口添加了网络。
第三节MATLAB的数值计算功能强大的数值计算功能是MATLAB最具代表性的特点.也正是由于MATLAB具有强大的数值计算功能,MathWorks公司才有能力把MA TLAB延伸到不同专业、不同行业和不同部门的各个领域,使其成为世界上最优秀的、应用最为广泛的、最受用户喜爱的数学软件.一、数组及其运算1、数组的建立(1). 直接输入数组建立数组最直接的方法是在命令窗口中直接输入数组.数组元素需要用方括号“[ ]”括起来,元素之间可以用空格、逗号或分号分隔.需要注意的是,用空格和逗号分隔建立行数组,元素之间全部用分号分隔建立列数组.(2). 利用冒号表达式建立数组, 此时不用方括号“[ ]”.冒号表达式建立等差数组,它的基本形式为x=x1:step:x2, 其中x1、step、x2分别为给定数值,x1表示数组的首元素数值,step 表示步长,即从第二个元素开始,后一个元素与前一个元素之间的差值,x2表示数组尾元素数值限.注意:x2并非尾元素数值,当x2-x1为step的整数倍时,x2才是尾元素数值.例如:>>a=1:2:12 和>>a=1:2:13 注:(a).如果step=1, 可以省略此项的输入,直接写成x=x1:x2.(b).如果x1< x2,则需要step>0;如果x1> x2, 则需要step<0;如果x1= x2, 则建立的数组只有一个元素.(3). 线性等分数组的建立MATLAB提供了函数linspace用来建立线性等分数组,调用格式如下:y=linspace(x1,x2) 建立100维的等分数组,使得y(1)=x1,y(100)=x2;y=linspace(x1,x2,n) 建立n维的等分数组,使得y(1)=x1,y(n)=x2.例如:>>y=linspace(1,100), y=linspace(1,100,6)线性等分函数和冒号表达式都可以建立等分数组,前者是设定了数组的维数去建立等分数组,后者是通过设定步长建立维数随之确定的等分数组.(4). 对数等分数组的建立MATLAB中提供了对数等分函数logspace生成等比数组,将此数组取以10为底的对数可生成等差数组.调用格式如下:y=logspace(x1,x2) 生成50维对数等分数组,使得y(1)=10x1, y(50)=10x2;例如:>>y=logspace(5,8);y=logspace(x1,x2,n) 生成n维对数等分行数组,使得y(1)=10x1, y(n)=10x2.另外,数组还可以从矩阵中抽取,还可以把数组看成1*n阶或n*1阶的矩阵,以矩阵形式生成.由于在MATLAB中矩阵比数组重要的多,此类函数将在矩阵及其运算中详细介绍.2、数组元素的调用(1). 调用数组的一个元素:数组的元素可以通过下标调用,如x(i)表示数组x的第i个元素.(2). 调用数组的部分元素:x(a:b:c)表示调用数组x的从第a个元素开始,以步长为b到第c 个元素,b可以为负数,b缺省时为1.(3). 直接使用元素序号调用数组元素:x([a b c d])表示调用数组x的第a、b、c、d个元素构成一个新数组[x(a) x(b) x(c) x(d)].3、数组的运算(1). 数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量进行相应的加、减、乘、除、乘方运算.设a=[a1 a2 … an], c=标量,则a±c=[a1±c a2±c … an±c];a*c=c*a=a.*c=[a1*c a2*c … an*c]a/c=a./c=[a1/c a2/c … an/c]a\c=a.\c=[a1\c a2\c … an\c]a^c=a.^c=[a1^c a2^c … an^c]c^a=c.^a=[c^a1 c^a2 … c^an](2). 两个相同维数的数组进行加、减、乘、除、幂运算,可按元素对元素的方式进行,不同大小或维数的数组不能进行运算.设a=[a1 a2 … an],b=[b1 b2 … bn],则a±b=[a1±b1 a2±b2 … an±bn];a.*b=[a1*b1 a2*b2 … an*bn]a./b=[a1/b1 a2/b2 … an/bn]a.\b=[a1\b1 a2\b2 … an\bn]a.^b=[a1^b1 a2^b2 … an^bn](3). 两个相同维数的数组的点积由dot函数实现,调用格式:dot(a,b).(4). 两个三维数组之间的向量积由cross函数实现,调用格式:cross(a,b).二、矩阵及其运算由于MATLAB的数值计算功能都是以(复)矩阵为基本单元进行的,因此,MATLAB 中矩阵的运算可谓最全面、最强大.本小节将对矩阵及其运算进行详细的阐述.1、矩阵的建立(1). 直接输入小矩阵在键盘上直接输入矩阵是最方便、最常用和最好的建立数值矩阵的方法,尤其适合较小的简单矩阵.用此方法建立矩阵时,应当注意以下几点:(a). 输入矩阵以“[ ]”为其标识,即矩阵的元素应在“[ ]”的内部,此时MA TLAB才将其识别为矩阵,如:a= [ 1 2 3; 1 1 1; 4, 5, 6](b). 矩阵的同行元素之间可由空格或逗号分隔,行与行之间用分号或回车符分隔;(c). 矩阵大小可不预先定义;(d). 若不想获得中间结果,在[ ]后可用分号结束;(e). 无任何元素的空矩阵也合法;(f). 矩阵元素可以为运算表达式,如b= [sin(pi/3), cos(pi/4); log(9), tanh(6)].(2). 当矩阵很大,不适合在命令窗口直接输入时,可以使用MATLAB提供的矩阵编辑器来完成矩阵的输入和修改.在使用矩阵编辑器时,必须首先在命令窗口中预先定义一个变量,这个变量可以是数或简单的矩阵.例如在命令窗口中输入A=1,打开工作空间窗口,选中变量A双击,就可以打开矩阵A的编辑器,通过添加或修改原来的元素,从而建立起我们需要的矩阵.(3)、通过M文件建立大矩阵当矩阵的规模比较大,直接输入法就显得笨拙,出现差错也不易修改.为了解决此问题,可以通过M文件输入矩阵.M文件是一种可以在MATLAB环境中运行的文本文件,分为命令文件和函数文件两种.这里是用命令M文件来建立大型矩阵.从菜单栏的File中选择New,再选择M-file命令,打开MA TLAB Editor窗口,按格式把所要输入的矩阵写入一文本文件中,并将此文件以m为扩展名,即为M文件.在MA TLAB命令窗口中输入此M文件名,运行后则把M文件中的大型矩阵输入到MA TLAB的内存中.例如:编制一名为example.m的M文件,内容如下:A=[456 468 873 2 579 55; 21, 687,54 488 8 13; 65 4656 88 98 21 5]在MA TLAB 命令窗口输入:>>example % 将矩阵A调入到MA TLAB的内存中说明:M文件要保存在MATLAB的搜索路径上,才能在MATLAB的命令窗口中调用.三、多项式运算1、多项式的建立在MA TLAB中多项式P(x)=a0x n+a1x n-1+…+a n-1x+a n由行向量P=[a0,a1,…,a n-1,a n]表示,这样就把多项式的问题转化为向量的问题.(1). 由系数向量建立多项式:在MA TLAB中,由于多项式是以向量形式储存的,因此,建立多项式的最简单的方法是直接输入向量,MA TLAB自动将向量元素按降幂顺序分配给多项式的各系数值,向量可以为行向量,也可以是列向量.例:输入多项式x3-5x2+6x-33.>>p=[1 -5 6 -33 ];(2).特征多项式的建立:矩阵的特征多项式由函数poly实现.>>A=[1 2 3; 2 3 4; 3 4 5]; p=poly(A)(3).由多项式的根建立多项式:由给定的根建立相应的多项式也由函数poly实现.>>root=[ -5 -3+4i -3-4i]; p=poly(root)2、多项式的运算(1). 求多项式的值.求多项式的值有两种形式,对应着两种算法:一种是以数组为计算单元,此时的计算函数是polyval, 调用格式为y=polyval(p,x),其中p为行向量形式的多项式,x为代入多项式的值,它可以是标量、向量、矩阵.如果x是向量或者矩阵,该函数将对向量或者矩阵的每一个元素计算多项式的值.另一种是以方阵为计算单元,进行矩阵运算,求得矩阵多项式的值,此时的计算函数为polyvalm.这两种计算的差别是源于数组运算和矩阵运算的差别.>>p=[1 11 55 125];x=[1 1;2 2];>>a=polyval(p,x)>>b=polyvalm(p,x)(2). 求多项式的根.求多项式的根有两种方法,一种是直接调用MATLAB的函数roots 求多项式的所有根;另一种是通过先建立多项式的伴随矩阵再求其特征值的方法得到多项式的所有根.例:用两种方法求解方程2x4-5x3+6x2-x+9=0的所有根.>>p=[2 -5 6 -1 9]; roots(p)>>a=compan(p), eig(a)(3). 多项式的乘除法运算.多项式的乘法由函数conv实现,多项式的除法由函数deconv 来实现.>>p1=[2 -5 6 -1 9]; p2=[3 -90 -18 ];>>p=conv(p1,p2) %多项式乘法>>[q,r]=deconv(p,p2) %多项式除法(4). 多项式的微分.函数polyder可以实现多项式的微分计算.>>c=[4 13 28 27 18];>>q=polyder(c)>>q=polyder(a,b) %求a*b的导数>>[q,d]=polyder(a,b) %求a/b的导数(5). 多项式的拟合.多项式拟合是多项式运算的一个重要组成部分,在工程及科研工作中都得到了广泛的应用.MATLAB提供了专用的拟合函数polyfit.其调用格式如下:polyfit(X,Y,n) 其中X,Y为拟合数据,n为拟合多项式的阶数.[p,s]= polyfit(X,Y,n) 其中p为拟合多项式系数向量,s为误差估计数组.例:用4次多项式对[0,pi/2]上的正弦函数进行最小二乘拟合.>>x=0:pi/20:pi/2; y=sin(x); % 获得[0,pi/2] 上的数据点>>a=polyfit(x,y,4) % 进行多项式拟合.第四节MATLAB的图形功能在进行数值计算的过程中,为了从直观上认识计算结果,可以通过MATLAB的图形功能将计算结果图形化.MA TLAB是通过描点、连线来作图的,因此,在作二维图形和三维图形之前,必须先取得该图形上一系列点的坐标,然后利用MATLAB函数作图.下面着重介绍二维图形的画法,对三维图形只作简单叙述.一、二维图形二维图形的绘制是MA TLAB图形功能的基础,也是在绝大多数数值计算中广泛应用的图形方式之一.1、基本绘图命令(1). plot命令绘制二维图形最常用的命令是plot.对于不同形式的输入,该函数可以实现不同的功能.(i). 当plot函数仅有一个输入变量时:plot(X)如果X为实向量,则以X的索引坐标作为横坐标,以X的各元素作为纵坐标绘制图形.如果X为复向量,则以X的实部作为横坐标,虚部作为纵坐标绘制图形.如果X为实数矩阵,则绘制X的列向量对其坐标索引的图形.如>>X=[0 0.5 0.75 0.95 0.8 0.35]; plot(X) %图4.1>>X=[1+2i,2+4i,3+2i,5+i,6+4i];plot(x) %图4.2图4.1 图4.2(ii). 当plot函数有两个输入变量时:plot(X,Y)当X和Y为向量时,X和Y的维数必须相同,而且同时为行向量或同时为列向量.此时以第一个向量的分量为横坐标,第二个向量的分量为纵坐标绘制图形,这是实际应用过程中最为常用的.例如:>>x=0:0.01*pi:pi; y=sin(x).*cos(x); %注意:此处的.*表示两个向量对应元素的乘积.>>plot(x,y) %图4.3图4.3 图4.4 当X,Y为m*n矩阵时,将在同一幅图中绘出n条不同颜色的连线.绘制规则为: 以X 矩阵的第j列分量作为横坐标,矩阵Y的第j列分量作为纵坐标,绘得第j条连线.若在同一幅图中出现多条曲线,MATLAB会自动地把不同曲线绘制成不同的颜色,以进行简单的区别.如:>>x=0:0.01*pi:pi; y=[sin(x'),cos(x')];>>plot([x',x'],y)(iii). 当plot函数有三个输入变量时:plot(X,Y, 'Linespec')想绘制不同的线型、颜色、标识等的图形时,可以调用此形式,第3个输入变量为图形显示属性的设置选项:线型、颜色、标识.线型:-实线;: 点线;-. 虚点线;--虚线;颜色:y 黄;m紫;c青;r 红;g 绿;b 蓝;w 白;k 黑;标识:. 点;o圆点;x 叉号;+ 加号;* 星号;s方形;d菱形;v下三角;^ 上三角;< 左三角;> 右三角;p 五角星;h 六角星.应用上述符号的不同组合可以为图形设置不同的线型、颜色、标识.在调用时,选项应置于单引号内,当多于一个选项时,各选项直接相连,中间不需要任何的分隔符.如:>>x=1:0.1*pi:2*pi; y=sin(x); z=cos(x); plot(x,y,'--k',x,z,'-.kd') %图4.4(2). fplot命令前面介绍的plot命令是根据外部输入数据或通过函数数值计算得到的数据进行作图.而在实际应用中,我们可能并不知道某一函数随自变量变化的趋势,此时若采用plot命令来绘图,则有可能会因为自变量的取值间隔不合理而使曲线图形不能反映出自变量在某些区域内函数值的变化情况.当然我们可以将自变量间隔取得足够小以体现函数值随自变量变化的曲线,但这样会使数据量变大.fplot命令可以很好地解决这个问题.该命令通过内部的自适应算法来动态决定自变量的取值间隔,当函数值变化缓慢时,间隔取大一点;变化剧烈时,间隔取小一点.fplot命令的调用方式:fplot(@fun, [xmin xmax ymin ymax]) 在[xmin xmax]内画出字符串fun表示的函数的图形,[ymin ymax]给出了y的限制.例如:>>fplot('sin(x)./x',[-20 20 -0.3 1.3]) %图4.5图4.5图4.62、图形处理的基本技术除了提供强大的绘图功能外,MATLAB语言还有极为强大的图形处理能力.下面介绍一些图形处理技术,包括图形控制、图形标注、图形保持以及子图的绘制等.(1). 图形控制MATLAB语言中较常用的图形控制函数有坐标轴控制函数axis、坐标轴缩放函数zoom 和坐标网格函数grid等.(i). axis函数控制坐标轴的特征在缺省情况下MATLAB自动选择图形的横、纵坐标的比例,如果你对这个比例不满意,可以用axis命令控制,常用的有:axis([xmin xmax ymin ymax]) [ ]中分别给出了x轴和y轴的最小、最大值;axis equal 或axis('equal') x轴和y轴单位长度相同;axis square 或axis('square') 图框呈方形;axis off 或axis('off') 清除坐标刻度.例如:>>x=0:0.025:pi/2; plot(x,tan(x),'-ko') %使用axis命令设定坐标轴之前的图形图4.6 >>axis([0 pi/2 0 5]) %使用axis命令设定坐标轴之后的图形图4.7图4.7 图4.8 (ii). zoom函数控制坐标轴的缩放:zoom函数可以实现对二维图形的缩放,该函数在处理局部较为密集的图形中有很大作用.常用的调用格式有:zoom 在zoom on 和zoom off之间切换;zoom on 允许对图形进行缩放;zoom off 禁止对图形进行缩放;zoom xon 允许x 轴缩放;zoom yon 允许y轴缩放;zoom out 恢复进行的一切缩放.当zoom处于on 状态时,可以通过鼠标进行图形缩放,单击鼠标左键将光标处的图形放大一倍;而单击鼠标右键将光标处的图形缩小一倍;双击鼠标左键则将会恢复缩放前的状态,即取消一切缩放操作.应当注意,对图形的缩放不会影响图形的原始尺寸,也不会影响图形的横纵坐标的比例,即不会改变图形的基本结构.(iii).grid函数控制平面图形的坐标网格:MA TLAB提供了平面网图函数grid用于绘制坐标网格,提高图形显示效果.grid函数的调用格式如下:grid on 在图形中绘制坐标网格;grid off 取消坐标网格.单独的函数grid将实现grid on 与grid off两种状态之间的转换.>>x=0:0.1*pi:2*pi; y=sin(x);>>plot(x,y)>>grid on %图4.8(2). 图形的标注MATLAB语言还提供了丰富的图形标注函数供用户自由地标注所绘制的图形.(i).坐标轴标注和图形标题xlabel ylabel 为x, y坐标轴添加标注title 为图形添加标题xlabel('标注内容','属性1', '属性值1', '属性2', '属性值2',…) %属性包括标注文本的属性,包括字体大小、字体名等.三个函数的调用结果的区别仅在于标注所处的位置不同,title 给出的标注将置于图的顶部,而xlabel 和ylabel则分置于相应的坐标轴的边上.例如:>>x=1:0.1*pi:2*pi; y=sin(x);>>plot(x,y)>>xlabel('x(0-2\pi)', 'fontweight', 'bold');>>title('y=sin(x)','fontsize', 12, 'fontweight', 'bold') %12不加单引号%图4.9图4.9 图4.10在标注过程中经常会遇到特殊符号的输入问题,为了解决这个问题,MA TLAB语言提供了相应的字符转换,如:\alpha→α;\beta→β;\gamma→γ;\delta→δ;\epsilon→ε;\zeta →ζ;\pi→π;\omega→ω;\Omega→Ω等等.用户也可以对文本标注进行显示控制,如:\bf黑体,\it 斜体,\rm 标准形式,例如:>>x=-10:0.1:10; y=exp(-x.^2/2);>>plot(x,y, '-')>>title('\bf y=e^{-x^{2}/2}') %图4.10(ii). 文本标注MATLAB对图形进行文本注释所提供的函数为text和gtext.text函数的调用格式:text(x,y, '标注文本及控制字符串')其中(x,y)给定标注文本在图中添加的位置,例如:>>x=1:0.1*pi:2*pi; y=sin(x);>>plot(x,y)>>text(3*pi/4,sin(3*pi/4), '\leftarrow sin(3\pi/4)=0.707')>>text(5*pi/4,sin(5*pi/4),['sin(5\pi/4)=',num2str(sin(5*pi/4)),'\rightarrow'],'HorizontalAlign ment', 'right', 'Fontsize', 12) %图4.11%属性HorizontalAlignment用来控制文本标注输入起点是在标注本身的左侧还是右侧.图4.11 图4.12 交互式文本输入函数gtext. 使用该函数,用户可以通过使用鼠标来选择文本输入的点,单击后,系统将把指定的文本输入到所选的位置上.>>x=1:0.1*pi:2*pi; y=sin(x);>>plot(x,y)>>gtext('y=sin(x)', 'Fontsize', 12)执行该函数时,将鼠标放在图形上会出现“+”字型交叉线供用户添加标注的点,选择添加标注的位置后,单击鼠标左键即可在该位置上添加标注.(iii). 图例标注在对数值计算结果进行绘图时,经常会出现在同一张图形中绘制多条曲线的情况,这时可以使用legend命令为曲线添加图例以便于区别它们.legend 函数能够为图形中的所有曲线进行自动标注,以其输入变量作为标注文本,具体调用格式如下:legend('标注1', '标注2',…)标注1,标注2等分别对应绘图过程中按绘制先后顺序所生成的曲线.>>x=0:0.1*pi:2*pi; y=sin(x); z=cos(x);>> plot(x,y,'k-o',x,z,'k--h')>>legend('sin(x)', 'cos(x)') %图4.12可以用鼠标拖动图例框改变其在图中的位置.也可以在legend函数调用时进行简单的定位设置:legend('标注1', '标注2',…, '定位代号')MATLAB 给出了6个定位代号,具体说明如下:0: 自动定位,使得图标与图形重复最少;1: 置于图形的右上角(默认值);2: 置于图。