Matlab运算与正弦稳态电路分析之欧阳科创编.docx
- 文档编号:14305677
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:26
- 大小:109.35KB
Matlab运算与正弦稳态电路分析之欧阳科创编.docx
《Matlab运算与正弦稳态电路分析之欧阳科创编.docx》由会员分享,可在线阅读,更多相关《Matlab运算与正弦稳态电路分析之欧阳科创编.docx(26页珍藏版)》请在冰点文库上搜索。
Matlab运算与正弦稳态电路分析之欧阳科创编
课程设计任务书
时间:
2021.02.05
创作:
欧阳科
学生姓名:
专业班级:
指导教师:
工作单位:
课程设计名称:
专业基础实践
课程设计题目:
Matlab运算与正弦稳态电路分析
初始条件:
1.Matlab7.1以上版本软件;
2.专业基础实践辅导资料:
“Matlab语言基础及使用入门”、“Matlab及在电子信息课程中的应用”、“线性代数”及“信号处理类”相关书籍等;
3.先修课程:
高等数学、线性代数、电路、Matlab应用实践及信号处理类基础课程等。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.实践内容:
根据指导老师给定的7套题目,按规定选择其中1套独立完成;
2.本专业基础实践统一技术要求:
研读辅导资料对应章节,对选定的设计题目进行理论分析,完成针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表等),并对实验结果进行分析和总结。
具体设计要求包括:
1初步了解Matlab、熟悉Matlab界面、进行简单操作等;
2Matlab的数值计算:
创建矩阵、矩阵运算、多项式运算、线性方程组、数值统计等;
3基本绘图函数:
了解plot,plot3,mesh,surf等,要求掌握以上绘图函数的用法、简单图形标注、简单颜色设定等;
4使用文本编辑器编辑m文件,会函数调用等;
5能完成简单电路的Matlab编程分析;
6按要求参加专业基础实践的实验演示和答辩等。
3.课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括:
1目录;②与设计题目相关的理论分析、归纳和总结;③与设计内容相关的原理分析、建模、推导、可行性分析;④程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分析和总结;⑤课程设计的心得体会(至少500字);⑥参考文献(不少于5篇);⑦其它必要内容等。
时间安排:
1.0周(分散进行)
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
1.MATLAB简介…………………………………………………………………
(1)
2.具体题目分析……………………………………………………………………(3)
2.1试题1………………………………………………………………………(3)
2.2试题2………………………………………………………………………(4)
2.3试题3………………………………………………………………………(5)
2.4试题4………………………………………………………………………(6)
2.5试题5……………………………………………………………………(10)
2.6试题6……………………………………………………………………(11)
2.7试题7……………………………………………………………………(13)
2.8试题8……………………………………………………………………(15)
2.9试题9……………………………………………………………………(16)
2.10试题10…………………………………………………………………(20)
2.11试题11…………………………………………………………………(21)
3.课程设计心得体会……………………………………………………………(24)
4.参考文献………………………………………………………………………(25)
5.本科生课程设计成绩评表……………………………………………………(26)
1.MATLAB简介
MATLAB的名称源自MatrixLaboratory,1984年由美国Mathworks公司推向市场。
它是一种科学计算软件,专门以矩阵的形式处理数据。
MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作。
MATLAB软件包括五大通用功能,数值计算功能(Nemeric)、符号运算功能(Symbolic)、数据可视化功能(Graphic)、数字图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。
其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MATLAB命令窗口。
该软件有三大特点,一是功能强大;二是界面友善、语言自然;三是开放性强。
目前,Mathworks公司已推出30多个应用工具箱。
MATLAB在线性代数、矩阵分析、数值及优化、数值统计和随机信号分析、电路与系统、系统动力学、图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
MATLAB应用:
MATLAB产品族可以用来进行以下各种工作:
①数值分析
②数值和符号计算
③工程与科学绘图
④控制系统的设计与仿真
⑤数字图像处理
⑥数字信号处理
⑦通讯系统设计与仿真
⑧财务与金融工程
MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。
2.具体题目设计、实现及分析
2.1已知t=linspace(0,2*pi,6),求t的正弦和正弦的绝对值。
2.1.1理论分析
这是利用matlab处理数值运算的题目。
linspace(a,b,n)为线性分割函数,功能是将指定区间(a,b)按线性等分为n份。
Matlab中求解正弦的函数为sin(),求取绝对值和复数模值的函数为abs()。
2.1.2程序代码
t=linspace(0,2*pi,6)%把区间(0,2*pi)分为6等份,并赋值给t
a=sin(t)%求t的正弦值,赋给a
b=abs(a)%求a的绝对值,即t的正弦的绝对值
2.1.3运行结果
t=
01.25662.51333.76995.02656.2832
a=
00.95110.58780.58780.95110.0000
b=
00.95110.58780.58780.95110.0000
2.1.4题目总结
matlab中的pi与真正的p有差距,而且数字与因式相乘要使用乘法符号‘*'.通过这个计算,我了解到matlab有处理数据计算的功能。
2.2绘制余弦曲线y=cos(x)和指数函数y=x^2曲线。
2.2.1理论分析
本题是画函数的曲线图,可以利用plot,ezplot等命令进行绘图。
由于plot要设置自变量的范围,而ezplot不需要设置,所以本题采用ezplot进行画图。
2.2.2程序代码
symsx;%声明变量x
y1=cos(x);%将cos(x)赋值给y1
y2=x^2;%将x^2赋值给y2
ezplot(y1);%画函数y1的图形
holdon%保持图形
ezplot(y2)%画函数y2的图形
2.2.3运行结果
图2.2.3余弦曲线y=cos(x)和指数函数y=x^2曲线
2.2.4题目总结
ezplot不需要自变量的范围也可作图,可以方便简洁地绘制出一元函数图像,要使用holdon命令才能将两图绘到同一图上。
2.3利用for...end循环语句,求2+4+6…+100的值。
2.3.1理论分析
for语句作用是循环步骤重复执行某语句段,其语法是:
for循环控制变量=存储着该变量依次所取值的一个向量。
循环语句块:
本块重复执行的次数由上方向量的长度决定,每次执行时,循环控制变量依次取该向量中的值.
2.3.2程序代码
sum=0;%赋sum初值为0
fori=2:
2:
100%变量i变化范围为2到100,以2步进
sum=sum+i;%累加求和
end%结束for循环
2.3.3运行结果
sum
sum =
2550
2.3.4题目总结
for循环语句使用一个向量来控制循环,循环次数由向量的长度来决定,而每次循环都依次从向量中取值。
当次循环中改变循环变量赋值,不会代入下次循环,所以除非在其中用break提前退出,Matlab循环的次数是预先定好的。
累加求和时,i的大小呈递增累加。
2.4分析下面每条指令的功能并运行,观察执行结果。
(1)X=0:
0.25:
3;
Y=X.*exp(X);
plot(X,Y),xlabel(‘x’),
ylabel(‘y’),title(‘y=x*exp(x)’);
(2)A=zeros(3,5)
A(:
)=4:
10
L=abs(A)>4
islogical(L)
X=A(L)
(3)A=[1:
5;6:
10]
pow2(A)
(4)A=zeros(3,2)
A(:
)=1:
6
A=A*(1+i)
A1=A.’;
B1=A’;
A=ones(2,3)
B=ones
(2)
C=eye(4)
D=diag(C)
E=repmat(C,1,3)
2.4.1程序分析
(1)X=0:
0.25:
3;%变量x从0到3,以0.25增加
Y=X.*exp(X);%函数y=
的表达式
plot(X,Y),xlabel(‘x’),
ylabel(‘y’),title(‘y=x*exp(x)’);%绘制y=
的图线,横坐标为x,
纵坐标为y,标题为y=x*exp(x)
(2)A=zeros(3,5)%创建一个3*5的零矩阵A
A(:
)=4:
10%为矩阵A赋值,4到10,步进为1
L=abs(A)>4%判断矩阵A中元素的绝对值是否大于4
islogical(L)%判断L是否为逻辑值
X=A(L)%X为逻辑数组L对应为1的位置的数据为列向量
(3)A=[1:
5;6:
10]%创建一个2*5的矩阵A,范围为1到10,步进为1
pow2(A)%返回数组X,依次计算A中元素以2为底的幂
(4)A=zeros(3,2)%创建一个3*2的零矩阵
A(:
)=1:
6%为矩阵A赋值,范围为1到6,步进为1
A=A*(1+i)%将矩阵A中的每一个元素乘以(1+i)
A1=A.'%对A进行数组转置生成矩阵A1
B1=A'%对A进行矩阵转置生成矩阵B1
(5)A=ones(2,3)%创建一个2*3的1矩阵A
B=ones
(2)%创建一个2*2的1矩阵B
C=eye(4)%创建一个4*4的单位矩阵C
D=diag(C)%获取单位矩阵C的对角线元素矩阵D
E=repmat(C,1,3)%将矩阵C生成为1*3的新矩阵E
2.4.2运行结果
程序运行结果一
图2.4.2y=
曲线
程序运行结果二
A=
00000
00000
00000
A=
41258
30369
214710
L=
00011
00011
00011
ans=
1
X=
5
6
7
8
9
10
程序运行结果三
A=[1:
5;6:
10]
pow2(A)
A=
12345
678910
ans=
2481632
641282565121024
程序运行结果四
图2.4.2程序(4)运行结果
2.4.2.5程序运行结果五
A=
111
111
B=
11
11
C=
1000
0100
0010
0001
D=
1
1
1
1
E=
100010001000
010001000100
001000100010
000100010001
2.4.3题目总结
实数矩阵的矩阵转置和数组矩阵计算结果是一样的,但是复数矩阵的数组转置和矩阵转置的计算结果不一致。
所以,数组转置运算也被称为非共轭转置,矩阵转置运算则被称为共轭矩阵。
数组的运算是指数组对应元素之间的运算,也称点运算。
2.5计算多项式p(x)=x3+15x2+8x在x=3和x=0:
1:
8时的值。
2.5.1理论分析
由题目已知这里运用到的是polyval()命令,通过polyval()命令可以快速的计算出在相应值下的多项式的值。
2.5.2程序代码
当x=3时;
x=3;%赋初值3给x
y=x^3+15*x^2+8*x%写出函数表达式
当x=0:
1:
8时;
symsx;%声明变量x
y=x^3+15*x^2+8*x;%写出函数表达式
x=0:
1:
8;%生成一个0到8的数组,每相邻两数间距为1
p=[1158];%将函数表达式的系数放在数组P中
polyval(p,x)%用polyval函数求得表达式的值
2.5.3运行结果
当x=3时;
y=
186
当x=0:
1:
8时;
ans=
824426284108134162192
2.5.4题目总结
ployval()是Matlab中的多项式求值函数。
在表达多项式系数中要把缺少的自变量系数0补充到系数矩阵中。
2.6随机生成一个10000×3的矩阵,并绘制其柱状图
2.6.1理论分析
随机生成矩阵函数可以用rand(M,N),表示随机产生一个M*N的矩阵。
柱状绘图函数可以用bar。
此函数是在平面内绘制柱状图,如果要绘制立体的,用bar3。
2.6.2程序代码
arry=rand(10000,3);%随机生成一个10000*3的矩阵
bar(arry);%利用bar函数画出柱状图
2.6.3运行结果
图2.6.3利用bar函数画出的该矩阵平面柱状图
题目总结
可以用bar函数绘制平面内柱状图。
利用switch…case编写以下程序:
某商场对顾客所购买的商品实行打折销售,标准如下商品价格用price来表示:
price
无折扣
price
%折扣
price
%折扣
Price
100015%折扣
输入所售商品的价格,求其实际销售价格。
2.7.1理论分析
MATLAB语言为解决多分支判断选择提供了switchcase语句。
Switchcase语句的一般表达式为:
switch(选择要判断的量)
case选择判断值1
选择判断语句1
case选择判断值2
选择判断语句2
……
otherwise
判断执行语句
2.7.2程序代码
price=input();%输入商品价格
switchfix(price/100)%价格除以100以后取整
case{0,1}
price=price*1;%价格没有折扣
case{2,3,4}
price=price*0.95;%价格有5%的折扣
case{5,6,7,8,9}
price=price*0.9;%价格有10%的折扣
caseothers
price=price*0.85;%价格有15%的折扣
end
2.7.3运行结果
>>price=822;
>>switchfix(price/100)
case{0,1}
price=price*1;
case{2,3,4}
price=price*0.95;
case{5,6,7,8,9}
price=price*0.9;
caseothers
price=price*0.85;
end
>>price
price=
739.8000
2.7.4题目总结
在MATLAB语言中,当switchcase语句中一个case语句后的条件为真时,switchcase语句不对其后的case语句进行判断,也就是说在MATLAB语言中,即使有多条case判断语句为真,也只执行所遇到的第一条为真的语句。
这样就不必像C语言那样,在每条case语句后加上break语句以防止继续执行后面为真的case条件语句。
2.8编程将表达式
进行部分分式展开
2.8.1理论分析
由数学知识可知可利用下列计算模型
2.8.2程序代码
symsx,x=0;
symss;
whilex<20
switchx
case0
k1=10*(x+3)/((x6)*(x16));
x=6;
case6
k2=10*(x+3)/(x*(x16));
x=16;
case16
k3=10*(x+3)/(x*(x6));
x=20;
end
end
y=k1/s+k2/(s6)+k3/(s16);
y
2.8.3运行结果
y=
19/(16*(s16))3/(2*(s6))+5/(16*s)
即多项式的可展开为:
2.8.4题目总结
本题主要在于数学运算模型建立和计算表达式的书写,利用while...end语句对其进行三次循环条件判断并计算三个常数,通过switch...语句分别给出三个常数的计算方式,最后再将计算出的三格常数带入到
中即可。
2.9已知
,其中t的范围是[010],计算y的微分和积分并给出曲线图
2.9.1理论分析
已知函数方程和自变量t的变化范围,对于积分,可以利用函数quad()对确定自变量变化范围进行计算,格式如quad('函数名',初值,终值)所示。
对于微分,可以利用函数diff()对确定自变量变化范围进行计算。
函数图象可用funtool指令得到。
2.9.2程序代码
2.9.2积分运算
yt='exp
(1)*cos(t)'%写出函数表达式
Ic=quad(yt,0,10,1e8)%用quad函数求积分
Funtool%进行画图
在Figure3框中f=处输入exp
(1)sin(t)在x=处填入[0,10]
2.9.2微分运算
symsty
y=exp
(1)*cos(t)%写出函数表达式
Id=diff(y,t)%用diff函数求解微分
funtool%进行画图
在Figure3框中f=处输入exp
(1)sin(t)在x=处填入[0,10]
2.9.3运行结果
2.9.3.积分运算
Ic=
0.
图2.9.3积分运算图形
2.9.3微分运算
图2.10.3。
2.2微分运算图形
2.9.4题目总结
绘制函数图像时还可以借助Matlab提供的专门绘制函数图象的指令flot(),格式如flot('函数名',[初值,终值])。
2.10用fminbnd求解函数
在区间(1,10)上的最小值
2.10.1理论分析
Fminbnd用于求某个给定函数的最小值点。
使用方法:
X=fminbnd(func,x1,x2)
Func是函数句柄,x1和x2是函数区间,得到的结果是使func取最小值的x值。
也可使用[x,fv]=fminbnd(func,x1,x2)的方式,这时fv就是函数的最小值。
2.10.2程序代码
f=@(x)x1/x+5;%确定函数
[x,fv]=fminbnd(f,1,10)%求区间1到10中函数的最小值
2.10.3运行结果
x=
fv
题目总结
本题主要在于fminbnd函数的使用方法,它有两种方式,一种是xfminbndfuncxx;另一种是[xfv]fminbndfuncxx。
运用时随便选哪种都可以。
在如图所示的电路中,已知
,
,
,
,求各支路电流、电压和电路的输入导纳,并画出电路的相量图。
2.11.1理论分析
由题意得,已知输入电压,要求各支路电流、电压和电路的输入导纳。
则:
先计算输入电阻。
Z1*Z2/(Z1+Z2)=Z12,Zin=Z+Z12;
所以:
Yin=1/Zin=1;
I=U/Zin;
I1=I*Z2/Z12,I2=II1;
U1=U*Z12/Zin;U0=Z*I;
2.11.2程序代码
Z=1j*0.5;Z1=1+j*1;Z2=3j*1;%输入已知条件,
U=8*exp(j*30*pi/180);%注意角度和弧度的转换
Z12=Z1*Z2/(Z1+Z2);
Zin=Z+Z12;%计算总阻抗
Y=1/Zin;%计算总导纳
I=U/Zin;%计算总电流
I1=I*Z2/(Z1+Z2);%利用分流原理计算I1
I2=II1;%利用KCL计算I2
U1=Z12*I;U0=Z*I;%计算各电压
disp('UII1I2U0U1')%显示计算结果
disp('幅值'),disp(abs([U,I,I1,I2,U0,U1]))%显示幅值
disp('相角'),disp(angle([U,I,I1,I2,U0,U1])*180/pi)%显示相角
subplot(1,2,1),hau=compass([U,U0,U1]);%绘制电压相量图
set(hau,'linewidth',2)
subplot(1,2,2),hai=compass([I,I1,I2]);%绘制电流相量图
set(hai,'linewidth',2)
2.11.3运行结果
图2.10.3运行数据结果
图2.10.3电路各量的相量图
2.11.4题目总结
已知电路中各元件的阻抗值,可通过串并联分析得出电路的总阻抗,进而可求电路的总导纳;然后通过分流、分压的关系可算各支路的电流、电压;用abs()函数显示复数的幅值,用angle()函数显示复数的相角;可利用subplot()、compass()、set()等函数命令将电压电流的向量图正确地显示在罗盘上。
因而可以运用MATLAB这一工具来对电路进行分析、计算、作图等.
3.课程设计的心得体会
通过这次MATLAB的课程设计,使我对MATLAB有了一个基础的理解,matlab具有数值分析.矩阵计算.科学数据可视化以及非线性动态系统的建模和仿真等诸多功能。
随着社会的不断发展,科技的不断进步,计算机的普及,它也被应用在越来越多的方面。
在学习MATLAB的过程中,我们查找了不少资料,发现很多知识是我们从没有接触过的,我们并不了解,所以借此增长了自己的见识,了解了更多关于它的应用。
在学习MATLAB中需要尽量多的熟悉matlab
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 运算 正弦 稳态 电路 分析 欧阳 创编