Matlab使用方法和程序设计
MATLAB程序设计及应用实例

c=input('请输入一个字符','s'); if c>='A' & c<='Z'
disp(setstr(abs(c)+1)); elseif c>='a'& c<='z'
disp(setstr(abs(c)-1)); elseif c>='0'& c<='9'
disp(abs(c)-abs('0')); else
disp(c); end
5.1.4 选择结构- switch语句
switch语句
其语句格式为: switch 表达式 case 值1 语句组1 case 值2 语句组2 …… case 值m 语句组m otherwise 语句组m+1 end
5.1.4 选择结构- switch语句
例 某商场对顾客所购买的商品实行打折销售,已知打折标 准,求所售商品的实际销售价格
例 矩阵乘法运算要求两矩阵的维数相容,否则会出错。 先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘
matlab程序设计与应用

matlab程序设计与应用Matlab是一款高效能的编程语言,具有高品质的计算和分析功能,近十多年来被广泛应用在工程计算、科学研究、商业分析、金融模拟和教育工作等多个领域。
它拥有一系列强大的算法编写功能,可以实现非线性矩阵求解、信号处理、图像处理、生物医学信号处理等功能。
本文将介绍Matlab程序设计与应用,以及它在工程计算、科学研究、商业分析等领域的应用和示例。
一、Matlab程序设计Matlab是一种操作方便的高级编程语言,立足于原始编码,它建立在C及FORTRAN之上,而且它的高级结构使得设计程序不必写成复杂的程序框架,而可以把主要精力放在要实现的功能上。
Matlab在程序设计方面支持面向对象编程(Object-oriented programming,OOP)方式,可以实现结构化的程序设计,把大量的程序按照模块和函数来管理,方便调用和重用,并可以利用Matlab的类和类的方法来实现程序的重用和拓展。
二、Matlab在工程计算领域的应用Matlab在工程计算领域的应用如下:(1)Matlab可以用于科学计算,如:数值分析、科学计算、多元函数拟合、图像处理以及信号处理等。
(2)Matlab可以用于设计和调试电子电路,如:数字电路、模拟电路、射频电路、功率电路以及控制电路等。
(3)Matlab可以用于控制系统分析,如:数模转换、频响函数以及过程控制等。
(4)Matlab可以用于机械结构设计,如:机械结构分析、运动学以及动力学等。
三、Matlab在科学研究和商业分析领域的应用Matlab在科学研究和商业分析领域的应用如下:(1)Matlab可以用于统计学研究,如:概率统计、偏差分析、多元分析以及非参数分析等。
(2)Matlab可以用于数据挖掘,如:决策树分类、聚类分析以及因子分析等。
(3)Matlab可以用于仿真研究,如:求解方程、模拟实验以及模型预测等。
(4)Matlab可以用于商业分析,如:市场调研、销售预测以及风险评估等。
matlab使用教程2-2

第2章 Matlab语言程序设计 章 语言程序设计
写二进制文件: 用fwrite写二进制文件: 写二进制文件 COUNT=fwrite(Fid, A, precision) 例: Fid=fopen(‘test.dat’, ‘w’); cnt=fwrite(Fid, A, ‘float’) fclose(Fid); 读取ASCII数据文件: 数据文件: 用fscanf读取 读取 数据文件 [A, COUNT]=fscanf(Fid, format, size) format用以控制读取的数据格式,由%加上格式符组成, 用以控制读取的数据格式, 加上格式符组成, 用以控制读取的数据格式 常见的格式符有: 常见的格式符有:d, i, o,u, x, e, f, s, c。 。 例:fscanf(Fid, ‘%s’); fscant(Fid, ‘%6.2f’); fscanf(Fid, “%5d’);
第2章 Matlab语言程序设计 章 语言程序设计
d) 其它与流程控制有关的语句
if
if
break语句循环结构 语句循环结构 语句
continue 语句循环结构 语句循环结构
第2章 Matlab语言程序设计 章 语言程序设计
pause 指令使程序运行停止,等待用户按任意键继续; 指令使程序运行停止 等待用户按任意键继续; 使程序运行停止, input 指令提示用户从键盘输入数值、字符串或表达 指令提示用户从键盘输入数值 提示用户从键盘输入数值、 并接受输入; 式,并接受输入; disp指令在屏幕上显示字符串; 指令在屏幕上显示字符串 指令在屏幕上显示字符串 echo on指令显示其后所有执行文件的指令; 指令显示其后所有执行文件的指令 指令显示其后所有执行文件的指令; echo off指令关闭其后所有执行文件的指令显示。 指令关闭其后所有执行文件的指令显示 指令关闭其后所有执行文件的指令显示。
MATLAB程序设计及应用实例

MATLAB程序设计及应用实例MATLAB(Matrix Laboratory)是一种用于算法开发、数据分析、可视化和数值计算的高级技术计算语言和环境。
它的强大功能和灵活性使其成为各个领域研究和工程实践中广泛使用的工具。
下面将介绍几个MATLAB程序设计及应用的实例。
1.信号处理:MATLAB是信号处理的强大工具,它可以用于滤波、频谱分析、小波变换、分析和合成音频信号等。
例如,可以利用MATLAB进行语音信号的去噪处理,通过设计特定的滤波器来去除信号中的噪声成分,从而提取出清晰的语音信号。
2.图像处理:MATLAB可以进行图像的加载、处理和分析。
它提供了丰富的图像处理函数和工具箱,可以实现图像的滤波、二值化、边缘检测、图像增强等操作。
例如,可以使用MATLAB对医学图像进行分割,将感兴趣的区域提取出来,辅助医生进行病灶诊断。
3.控制系统设计:MATLAB是控制系统设计的有效工具。
它提供了丰富的控制系统分析和设计函数,可以进行系统建模、模拟和优化。
例如,可以使用MATLAB进行PID控制器的参数调整,通过对系统建模和后续仿真,优化PID控制器的参数,提高控制系统的性能和稳定性。
4.机器学习:MATLAB提供了强大的机器学习和深度学习工具箱,可以进行数据预处理、特征提取、模型训练和评估等操作。
例如,可以利用MATLAB进行图像分类,通过构建深度卷积神经网络模型,将输入的图像进行分类和识别。
5.数值计算:MATLAB对线性代数、数值优化和统计分析等有着强大的支持。
它提供的优化和求解函数可以解决复杂的线性和非线性优化问题,例如最小二乘拟合和参数估计等。
此外,MATLAB还拥有强大的统计分析工具,可以进行假设检验、数据拟合、方差分析等统计分析操作。
6.仿真模拟:MATLAB可以进行动态系统的建模和仿真,通过搭建系统方程和初始条件,可以对系统的动态响应进行模拟。
例如,在电力系统中,可以使用MATLAB进行电力系统稳定性分析,对电力系统的动态响应进行跟踪和分析。
MATLAB程序设计

MATLAB程序设计MATLAB提供了一个完善的程序设计语言环境,使用户能够方便地编制复杂的程序,完成各种计算。
本节先介绍关系运算、逻辑运算,再介绍M-文件(即程序文件)的结构及MATLAB的程序控制流语句。
一、关系运算和逻辑运算1.关系运算(1)关系运算符:< ;< = ;> ;> = ;= = ;~ =(2)关系表达式:用关系运算符将两个同类型的量(表达式)连接起来的式子。
【注】①关系运算本质上是标量运算,关系表达式的值是逻辑值(0-假1-真);②当作用于两个同样大小矩阵时,则分别对两个矩阵的对应元素运算,结果是一个0-1矩阵。
例1.对向量进行关系运算。
>> A=1:5,B=5:-1:1 % 输入向量A = 1 2 3 4 5B = 5 4 3 2 1>> C=(A>=4) % 对向量进行关系运算C = 0 0 0 1 1>> D=(A==B) % 对向量进行关系运算D = 0 0 1 0 02.逻辑运算(1)逻辑运算符:& (and,与)、| (or,或)、~ (not,非)(2)逻辑表达式:用逻辑将两个逻辑量连接起来的式子。
【注】①逻辑运算本质上是标量运算,它将任何非零元素视为1(真);②当作用于两个同样大小矩阵时,则分别对两个矩阵的对应元素运算,结果是一个0-1矩阵。
(真值表见P27)例2.对向量进行逻辑运算。
>> a=1:9,b=9-aa = 1 2 3 4 5 6 7 8 9b = 8 7 6 5 4 3 2 1 0>> c=~(a>4) % 非运算c = 1 1 1 1 0 0 0 0 0>> d=(a>=3)&(b<6) % 与运算d = 0 0 0 1 1 1 1 1 13.逻辑函数any(x) 向量x 中有非零元返回1,否则返回0。
(向量函数) all(x) 向量x 中所有元素非零返回1,否则返回0。
MATLAB基础及程序设计

一、变量和数值
➢Matlab的变量有一定的命名规则: (1)变量名区分大小写。’A’与’a’是不同的变量。 (2)变量名不能超过63个字符。 (3)变量名必须以字母开头。 (4)关键字(如if,while等)不能作为变量名。 (5)有一些系统自动定义的特殊变量,如pi,inf,i等。
➢特殊变量 ans: 用于结果的缺省变量名 pi: 圆周率 eps:计算机的最小数 inf:无穷大
>>syms a b c x f2=a*x^2+b*x+c 上面的语句即创建了符号变量a,b,c,x,又创建了符号表达 式,f1,f2符号表达式相同。
二、符号表达式的代数运算: 特点: 1、传统的数值运算由于计算机的有效位数的 限制,会产生误差。符号运算则可以避免。
2、符号运算可以得出完全的封闭解或任意精 度的数值解。
六、代数方程组的求解
[例] x1+x2=5 2x1+x2=7 x1+2x3=4
求解x1,x2。 a=[1 1 0;2 1 0;1 0 2];b=[1;5;5]; x=a\b x=
2 3
七、多项式拟合 多项式拟合是用一个多项式来逼近一组给定的 数据,在数据分析上是常用的方法,使用polyfit 函数来实现.拟合的准则是最小二乘法。 [例] x0=0:0.1:1;
2、用MATLAB函数创建 + rand —— 随机矩阵 >>rand(m,n)
+eye —— 单位矩阵 >>eye(m,n)
+zeros ——全部元素都为0 的矩阵
+>>zeros(m,n) +ones ——全部元素都为1的 矩阵
+ >>ones(m,n)
第二章 MATLAB语言的使用与程序设计

命令历史窗口:显示已执行过的命令。在窗口的某一命令上单击鼠标 右键,会弹出菜单,对所选命令进行操作。
当前路径窗口:提供了当前路径文件的操作
演示
MATLAB的搜索路径
搜索路径是一系列文件路径的组合。当程序和命令执行 时, MATLAB 在搜索路径中查找程序或命令运行所需的函数文 件。 MATLAB 在执行搜索时按照规定的顺序。如:在命令窗口 中输入example,MATLAB将按下面的步骤来处理: 1.检查example是不是一个变量,如果是,则返回变量的值;
本章重点:
MATLAB工作环境掌握 主要文件类型及常用命令
矩阵、变量、表达式、常用函数
MATLAB语言的基本语句结构及程序调试方法
一、MATLAB系统简介
MATLAB的主要组成部分
1.MATLAB语言体系:MATLAB 语言是一种以矩阵运算为基础的高级 语言,具有条件控制、函数调用、数据结构、输入输出及面向对象等 程序语言特征,可以进行程序设计。
6 )对矩阵的特殊操作: rot90(a) 将 a 矩阵旋转 90 度、 fliplr(a) 将 a 矩阵的列反序、 flipud(a) 将 a 矩阵的行反序、diag(a) 将向量 a 构 成对角阵( 元素放在主对角线上 )---a 为向量、triu(a) 提取矩阵的上 三角部分、reshape改变矩阵的阶数,按列的顺序重排。
逻辑运算符: 在MATLAB中,逻辑运算符有3种。 & 逻辑与。当运算双方对应元素都为非零时; 结果为1,否则,结果为0。
| 逻辑或。当运算双方对应元素有一个为非零 时;结果为1,否则,结果为0。
~ 结果为0。 逻辑非。当元素的值为 0 时,结果为 1 ,否则,
例: a=[1 0 3;0 –1 6] , b=[-1 0 0;0 5 0.3] ,计算两矩
matlab教程(全)09Matlab程序设计

2020/11/8
Application of Matlab Language
14
5.5 Matlab矩阵分析与处理
5.5.1 特殊矩阵 常见的特殊矩阵有零矩阵、幺矩阵、单位矩阵等,这类特殊矩阵在应用
中具有通用性。 1、通用的特殊矩阵 常用的产生通用殊矩阵的函数有: zeros:产生全0矩阵(零矩阵)。 ones: 产生全1矩阵(幺矩阵)。 eye: 产生单位矩阵。 rand:产生0~1间均匀分布的随机矩阵。 randn:产生均值为0,方差为1的标准正态分布随机矩阵。
5.4.1 程序调试概述 一般说来,应用程序的错误有两类,一类是语法错误,另一类是运行时
的错误。语法错误,给出相应的错误信息,并标出错误在程序中的行 号。例如:输入下列程序: A = 87;
B = 9.3;
C = A+*B; 系统将给出错误信息:
??? Error: File: Untitled1.m Line: 3 Column: 7
2020/11/8
Application of Matlab Language
4
说明:
将以上函数文件以文件名fcircle.m保存,然后在命令窗口调用。
[s,p] = fcircle(10) 输出结果是: s=
314.1593 p=
62.8319 采用help命令或lookfor命令可以显示出注释说明部分的内容。 help fcircle 屏幕显示
进行存取和修改。
全局变量用global命令定义,格式为:
global 变量名
例5.13 全局变量应用示例。
先建立函数文件wadd.m,该函数将输入的参数加权相加:
function f = wadd(x,y)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 Matlab使用方法和程序设计一、实验目的:1、掌握Matlab软件使用的基本方法2、熟悉Matlab的基本运算和程序控制语句3、熟悉Matlab程序设计和基本方法二、实验内容:1、求多项式的根:p(x)=x^4+2x^3+3x^2+5x+4源程序:a=[1 2 3 5 4];b=roots(a)运行结果:分析:调用roots(a),求多项式的根2、已知f= a^4*(b^2-c^2)+b^4*(c^2-a^2)+c^4*(a^2-b^2),试用符号运算的方法对其因式分解源程序:syms a b c;f=a^4*(b^2-c^2)+b^4*(c^2-a^2)+c^4*(a^2-b^2);R=factor(f)运行结果:分析:调用factor(s)对多项式进行因式分解3、编写一个函数,完成求和:S=1+3+5+,,,,,,+2i+1源程序:sum=0;for i=1:2:1000;sum=sum+i;endsum运行结果:分析:调用for循环完成求和,起始值为1,步长为2,终止值为1000 4、已知一传递函数。
F(s)=,试将其分解部分分式源程序:num=[1 2];den=[1 5 4];[res,poles,k]=residue(num,den)运行结果:分析:调用residue(num,den) 进行分解部分分式,num为传递函数的分子,den为传递函数的分母。
三、实验总结:本次实验使我掌握了Matlab软件使用的基本方法,熟悉了Matlab的基本运算和程序控制语句,熟悉Matlab程序设计和基本方法,让我将理论与实践相结合增强了自我动手能力,为以后的工作打下一定的基础。
实验二 Matlab使用方法和程序设计一、实验目的:1、掌握如何使用MATLAB进行系统时域分析2、掌握如何使用MATLAB进行系统频域分析3、掌握如何使用MATLAB进行系统根轨迹分析4、掌握如何使用MATLAB进行系统稳定性分析二、实验内容:时域分析:根据传递函数,绘制其单位阶跃响应曲线,并读出超调量。
源程序:num=[3,15,18];den=[1,6,10,8];G=tf(num,den);time=[0:0.1:20];step(G,time)[wn,z,p]=damp(G);wnzp=[wn,z,p]k=dcgain(G)运行结果截图:分析:由响应曲线可知;该传递函数的超调量为7.28%。
2、频域分析:二阶系统传递函数,当ε=0.7,=6时的Bode图、Nichols图、Nyquist图,并判断其稳定性。
Bode 图源程序:num=36;den=[1,8.4,36];G=tf(num,den);bode(G)运行结果截图:分析:由bode图可以读出:当L(w)=0dB时,;当时,L(w)<0;所以该二阶系统稳定。
Nyquist图源程序:num=36;den=[1,8.4,36];G=tf(num,den);nyquist(G)运行结果截图:分析:由Nyquist图可以读出:奈奎斯特曲线未包含(-1,0)点,所以该二阶系统稳定。
Nichols图源程序:num=36;den=[1,8.4,36];G=tf(num,den);Nichols(G);运行结果截图:分析:由Nichols图可以读出:幅值裕量为0.0017dB>0dB,相角裕量为164°>0,所以该二阶系统稳定。
3.根轨迹分析:前向通道:,反馈通道:,试确定使系统稳定的K值范围。
源程序:num=k;den=conv([1,0],conv([3,5],[1,100]));G=tf(num,den)rlocus(G);sgrid;[k,poles]=rlocfind(G); k,poles分析:调用[k,poles]=rlocfind(G),在图中显示K值和极点,从图中可以读出K值在-13.6≦K≦13.6时,系统稳定。
4.稳定性分析:已知开环传递函数,(1)判断其稳定性(根分布);源程序:num=6;den=conv([1,0],conv([1,3],[1,2,2]));g=tf(num,den);bode(g,{0.001,100});grid;分析:由图可以看出该开环传递函数的根都落在s复平面虚轴左半轴,所以该系统稳定。
(2)并用Bode 图判断其稳定性,及其稳定裕量。
分析:由Bode图可以看出,当L(w)=0dB时,;当时,L(w)<0;所以该系统稳定。
幅值裕量为2.66,相角裕量为17.6°。
3、实验总结通过本次试验让我掌握了如何使用MATLAB进行系统时域分析,如何使用MATLAB进行系统频域分析,如何使用MATLAB进行系统根轨迹分析,如何使用MATLAB进行系统稳定性分析,知道如何去读bode图,Nichols图,Nyquist图,如何去通过读图来判断系统的稳定性,也明白了使系统稳定时K值得取值范围,以及用bode图去读出系统的稳定裕量。
让我受益匪浅,为以后的工作打下了一定基础。
实验三 Matlab使用方法和程序设计一、实验目的1.掌握使用串联校正控制系统设计的方法2.掌握Niegle-Nichols的等幅振荡法PID定参二、实验内容1、设一单位负反馈控制系统,如果控制对象的开环传递函数为,试设计一个串联超前校正装置,要求校正后相角裕度γ′≧45o,当系统输入信号是单位斜坡信号时,稳态误差,绘制出校正后系统和未校正系统的Bode图及其闭环系统的单位阶跃响应曲线并对比。
源程序:num=8000;den=conv([1,0],conv([1,4],[1,80]));G=tf(num,den);[Gm,Pm,Wcg,Wcp]=margin(G);w=0.1:0.1:10000;[mag,phase]=bode(g,w);magdb=20*log10(mag);phim1=45;deta=8;phim=phim1-Pm+deta;bita=(1-sin(phim*pi/180))/(1+sin(phim*pi/180));n=find(magdb+10*log10(1/bita)<=0.0001);wc=n(1);w1=(wc/10)*sqrt(bita);w2=(wc/10)/sqrt(bita);numc=[1/w1,1];denc=[1/w2,1];Gc=tf(numc,denc);GmdB=20*log10(Gm);GcG=Gc*G;[Gmc,Pmc,wcgc,wcpc]=margin(GcG);GmcdB=20*log10(Gmc);disp('未校正系统的开环传递函数和频域响应参数:h,γ,wc') G,[ GmdB,Pm,Wcp],disp('校正装置传递函数和校正后系统开环传递函数')Gc,GcG,disp('校正后系统的频域响应参数:h,γ,wc')[GmcdB,Pmc,wcpc],disp('校正装置的参数T和β值:T,β')T=1/w1;[T,bita],bode(G,GcG);figure(2);margin(GcG)bode(GcG)运行结果截图:校正前:分析:由上图及运行结果可以看出,未校正时系统的幅值裕量为3.36,相角裕量为15.8578,穿越频率为17.8885,截止频率为9.5715.校正后:分析:由上图可以看出,校正后系统的幅值裕量,相角裕量有了明显的增大,使系统更加稳定。
2、设一单位负反馈系统的开环传递函数为,请用Ziegle-Nichols第二种方法设计PID参数并绘制单位阶跃响应曲线及系统的性能指标。
源程序:num=1;den=conv([1,0],conv([1,1],[1,20]));G=tf(num,den);for Km=0:0.1:10000Gc=Km;GcG=feedback(Gc*G,1);[num,den]=tfdata(GcG,'v');p=roots(den);pr=real(p);prm=max(pr);pr0=find(prm>=-0.001);n=length(pr0);if n>=1breakendendstep(GcG,0:0.001:3);Km (求Km)分析:由运行结果可以看出:Km=419.1000 分析:从图中可以计算出:Tm=(2.15-0.75)s=1.4snum=1;den=conv([1,0],conv([1,1],[1,20]));G=tf(num,den); Km=419.1;Tm=1.4;Kp=0.6*Km;Ti=0.5*Tm;Td=0.125*Tm;Kp,Ti,Td,s=tf('s');GcG=Kp*(1+1/(Ti*s)+Td*s);GcG=feedback(Gc*G,1);step(GcG)(求Kp,Ti,Td)分析:从运行结果可以看出:Kp=251.46,Ti=0.7,Td=0.175分析:从上图可以看出经Ziegle-Nichols第二种方法设计PID参数后,该系统上升时间为0.278,超调量为65.8%,超调量有些大,调整时间为7.7,稳定时间为11.8。
3、实验总结经过本次试验让我掌握使用串联校正控制系统设计的方法,学会了通过根轨迹法设计串联校正的方法,掌握了Niegle-Nichols的等幅振荡法PID定参的第二种方法,知道了Niegle-Nichols的优点在于系统不需要再在闭环状态下运行,只需在开环状态下就可测得其阶跃响应曲线。
但是缺点是该方法得到的PID控制器的参数,闭环传递函数的超调量比较大。