电机matlab实验报告

2024-09-09 版权声明 我要投稿

电机matlab实验报告(精选6篇)

电机matlab实验报告 篇1

一、实验目得 初步熟悉 MATLAB 工作环境,熟悉命令窗口,学会使用帮助窗口查找帮助信息。

命令窗口 二、实验内容(1)熟悉MATLAB平台得工作环境.(2)

熟悉MATLAB 得5 个工作窗口。

(3)MATLAB 得优先搜索顺序.三、实验步骤 1、熟悉MATLAB 得5 个基本窗口 ① mand Window(命令窗口)

② Workspace(工作空间窗口)

③ mand History(命令历史记录窗口)

④ Current Directory(当前目录窗口)

⑤ Help Window(帮助窗口)

(1)命令窗口(mand Window)。

在命令窗口中依次输入以下命令:

>〉x=1 〉> y=[1 2 3

4 5 68 9]; 〉> z1=[1:10],z2=[1:2:5]; >> w=linspace(1,10,10); >〉 t1=ones(3),t2=ones(1,3),t3=ones(3,1)〉〉 t4=ones(3),t4=eye(4)x =1 z1 =

9t1 =

t2 =

t3 =

1 t4 =

t4 =

0

0

0

0

0

0

0

0

0

0

0

思考题: ①

变量如何声明, , 变量名须遵守什么规则、就是否区分大小写。

答:(1)变量声明

1、局部变量 每个函数都有自己得局部变量,这些变量只能在定义它得函数内部使用。当函数运行时,局部变量保存在函数得工作空间中,一旦函数退出,这些局部变量将不复存在。

脚本(没有输入输出参数,由一系列MATLAB命令组成得M文件)没有单独得工作空间,只能共享调用者得工作空间。当从命令行调用,脚本变量存在基本工作空间中;当从函数调用,脚本变量存在函数空间中. 2、全局变量 在函数或基本工作空间内,用global声明得变量为全局变量。例如声明a为全局变量:

>〉global a 声明了全局变量得函数或基本工作空间,共享该全局变量,都可以给它曲赋值。

如果函数得子函数也要使用全局变量,也必须用global声明.3、永久变量 永久变量用persistent声明,只能在M文件函数中定义与使用,只允许声明它得函数存取.当声明它得函数退出时,MATLAB不会从内存中清除它,例如声明a为永久变量: 〉〉persistent a(2)变量命名规则如下: :

始于字母,由字母、数字或下划线组成;区分大小写;可任意长,但使用前N个字符.N与硬件有关,由函数namelengthmax返回,一般N=63; 不能使用关键字作为变量名(关键字在后面给出); 避免使用函数名作为变量名.如果变量采用函数名,该函数失效.(3)区分大小写

试说明分号、逗号、冒号得用法。

答:分号:加上分号“;“其作用就是将计算机结果存入内存,但不显示在屏幕上,反之,语句结尾若不加“;”,则表示在语句执行后,在将计算结果存入内存得同时,还将运算结果显示出来.逗号:分割列表

冒号:从什么到什么,比如1:10意思就是——1到10 ③ ③

l inspace())

称为“线性等分”函数, , 说明它得用法。可使用help命令,格式如下:

>>help linspace

数 说明函数 ones())、、zero s()、eye()得用法。

答;(1)ones()函数:全部元素都为 1 得常数矩阵;(2)zeros()函数:全部元素都为 0 得矩阵;(3)eye()函数:单位矩阵;

(4)linspace()函数:如 a=linspace(n1,n2,n3),表示在线性空

间上,行矢量得值从 n1 到 n2(2)工作空间窗口(Workspace). 单击工作空间窗口右上角得按钮,将其从MATLAB 主界面分离出来。

① 在工作空间查瞧各个变量,或在命令窗口用who, whos(注意大小写)查瞧各个 变量。

② 在工作空间双击变量,弹出Array Editor 窗口(数组编辑器窗口),即可修改变量。

③ 使用save 命令把工作空间得全部变量保存为my_var、mat 文件。

〉〉save my_var、mat

④ 输入下列命令: 〉〉clear all %清除工作空间得所有变量

观察工作空间得变量就是否被清空。使用load 命令把刚才保存得变量载入工作空间。

>〉load my_var、mat

⑤ 清除命令窗口命令: >〉clc(3)历史命令窗口(mand History)。

打开历史命令窗口,可以瞧到每次运行MATLAB 得时间与曾在命令窗口输入过得命 令,练习以下几种利用历史命令窗口重复执行输入过得命令得方法。

① 在历史命令窗口中选中要重复执行得一行或几行命令,右击,出现快捷菜单,选择 Copy,然后再Paste 到命令窗口。

② 在历史命令窗口中双击要执行得一行命令,或者选中要重复执行得一行或几行命令 后,用鼠标将其拖动到命令窗口中执行。

③ 在历史命令窗口中选中要重复执行得一行或几行命令,右击,出现快捷菜单,选择 Evaluate Selection,也可以执行。

④ 或者在命令窗口使用方向键得上下键得到以前输入得命令。例如,按方向键“↑” 一次,就重新将用户最后一次输入得命令调到MATLAB 提示符下。重复地按方向上键 “↑”,就会在每次按下得时候调用再往前一次输入得命令。类似地,按方向键“↓”得时 候,就往后调用一次输入得命令.按方向键“←“或者方向键“→”就会在提示符得命令 中左右移动光标,这样用户就可以用类似于在字处理软件中编辑文本得方法编辑这些命令。

(4)

当前目录命令窗口(Current Directory).MATLAB 得当前目录即就是系统默认得实施打开、装载、编辑与保存文件等操作时得文 件夹。打开当前目录窗口后,可以瞧到用“save”命令所保存得my_var、mat 文件就是保存在 目录C:MATLAB6p5work 下。

(5)帮助窗口(Help Window)。

单击工具栏得图标,或选择菜单View|Help,或选择菜单Help|MATLAB Help 都能 启动帮助窗口。

① 通过Index 选项卡查找log2()函数得用法,在Search index for 栏中输入需要查找得 词汇“log2”,在左下侧就列出与之最匹配得词汇条目,选择“log2[1]”,右侧得窗口就 会显示相应得内容。

② 也可以通过Search 选项卡查找log2()函数得用法.Search 选项卡与Index 选项卡 不同,Index 只在专用术语表中查找,而Search 搜索得就是整个HTML 帮助文件。

2、MATLAB 得数值显示格式设置 屏幕显示方式有紧凑(pact)与松散(Loose)两种,其中Loose 为默认方式.>〉a=ones(1,30)

〉>format pact

〉〉a 数字显示格式有short、long、short e、long e 等,请参照教材得列表练习一遍。

〉〉format long >>pi

〉〉format short >〉pi

〉>format long 〉〉pi

>>format + 〉〉pi

〉>—pi

3、变量得搜索顺序 在命令窗口中输入以下指令:

>>pi

〉>sin(pi);

>>exist(’pi”)

〉>pi=0;>〉exist(’pi“)

>〉pi

〉〉clear pi 〉>exist('pi’)>>pi

思考题:① 3 次执行exist(’pi’)得结果一样吗?如果不一样,试解释为什么? 答:不一样,pi原来就是库存函数,但就是如果被赋值则系统默认被赋予得值为pi后来得值,但就是当执行clear pi之后所赋得值被清空,因此pi得值又成为3、1416 ② 圆周率 pi 就是系统得默认常量,为什么会被改变为 0? 答:pi原来就是库存函数,但就是如果被赋值则系统默认被赋予得值为 pi 后来得值,但就是当执行 clear pi之后所赋得值被清空,因此 pi 得值又成为3、1416

实验二

MA TLAB语言基础 一、实验目得 基本掌握 MATLAB 向量、矩阵、数组得生成及其基本运算(区分数组运算与矩阵运算)、常用得数学函数。交接字符串得操作.二、实验内容(1)向量得生成与运算。

(2)矩阵得创建、引用与运算。

(3)

多维数组得创建及运算。

(4)字符串得操作。

三、实验步骤 1、向量得生成与运算 1)

向量得生成 直接输入法: A =

>〉 B=[1;2;3;4;5]

B =

5  冒号生成发:

〉〉 A=1:2:10 ,B=1:10,C=10:—1:1

A =

B =

C =

10

1  函数法:

Linspace()就是线性等分函数,logspace()就是对数等分函数。

>〉 A=linspace(1,10),B=linspace(1,30,10)A =

Columns 1 through 91、0000

1、0909

1、1818

1、2727

1、3636

1、4545

1、5455

1、6364

1、7273

Columns 10 through 181、8182

1、9091

2、0000

2、0909

2、1818

2、2727

2、3636

2、4545

2、5455

Columns 19 through 272、6364

2、7273

2、8182

2、9091

3、0000

3、0909

3、1818

3、2727

3、3636

Columns 28 through 36

3、4545

3、5455

3、6364

3、7273

3、8182

3、9091

4、0000

4、0909

4、1818

Columns 37 through 454、2727

4、3636

4、4545

4、5455

4、6364

4、7273

4、8182

4、9091

5、0000

Columns 46 through 545、0909

5、1818

5、2727

5、3636

5、4545

5、5455

5、6364

5、7273

5、8182

Columns 55 through 63

5、9091

6、0000

6、0909

6、1818

6、2727

6、3636

6、4545

6、5455

6、6364

Columns 64 through 72

6、7273

6、8182

6、9091

7、0000

7、0909

7、1818

7、2727

7、3636

7、4545

Columns 73 through 81

7、5455

7、6364

7、7273

7、8182

7、9091

8、0000

8、0909

8、1818

8、2727

Columns 82 through 908、3636

8、4545

8、5455

8、6364

8、7273

8、8182

8、9091

9、0000

9、0909

Columns 91 through 999、1818

9、2727

9、3636

9、4545

9、5455

9、6364

9、7273

9、8182

9、9091

Column 100

10、0000

B =

Columns 1 through 91、0000

4、2222

7、4444

10、666713、8889

17、1111

20、333323、555626、7778

Column 1030、0000 >> A=logspace(0,4,5)A =

10

100

1000

10000 练习:

使用 logspace()创建1—4得有 10 个元素得行向量。

答案:

>〉 A=logspace(1,10,4*pi)

A =1、0e+010 *

Columns 1 through 9

0、0000

0、0000

0、0000

0、0000

0、0000

0、0000

0、0001

0、0005

0、0035

Columns 10 through 120、0231

0、1520

1、0000 2)向量得运算 维数相同得行向量只见可以相加减,维数相同得列向量也可以相加减,标量可以与向量直接相乘除。

〉〉 A=[1 2 3 4 5],B=3:7,A =

B =

>〉 AT=A”,BT=B“, AT =

BT =

>〉 E1=A+B, E2=A-B

E1 =

10E2 =

—2

—2

—2

〉〉 F=AT—BT, F =

-2

—2

〉〉 G1=3*A, G2=B/3, G1 =

12

15

G2 =1、0000

1、3333

1、6667

2、0000

2、3333  向量得点积与叉积运算。

〉〉 A=ones(1,10);B=(1:10); BT=B”;>> E1=dot(A,B)

E1 =

55

〉〉 E2=A*BT

E2 =

〉〉 clear >> A=1:3,B=3:5,A =

B =

〉〉 E=cross(A,B)

E = -2

—2 2.矩阵得创建、引用与运算

1)矩阵得创建与引用

矩阵就是由元素构成得矩阵结构,行向量与列向量就是矩阵得特殊形式。

 直接输入法:

〉〉 A=[1 2 3;4 5 6]

A =

〉〉 B=[ 1 4 75 86 9 ] B =

〉> A(1)

ans =〉〉 A(4:end)

ans =

6 〉〉 B(:,1)ans =

2〉> B(:)ans =

8>〉 B(5)

ans =抽取法 〉> clear 〉> A=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16] A =

10

12

13

16 >〉 B=A(1:3,2:3)

B =

10

11 〉> C=A([1 3],[2 4])

C =

10

12 〉〉 A([1 3;2 4])ans =

5 函数法: 〉〉 A=ones(3,4)A =

>〉 B=zero(3)

??? Undefined function or method “zero’ for input arguments of type ”double’、>> B=zeros(3)B =

0

0

0

0

0 >> C=eyes(3,2)??? Undefined function or method “eyes’ for input arguments of type ”double’、〉> C=eye(3,2)C =

0

0

0

0 >> D=magic(3)D =

拼接法 〉〉 clear 〉> A=ones(3,4)A =

>〉 B=zeros(3)

B =

0

0

0

0

0

0

0 >〉 C=eye(4)C =

0

0

0

0

0

0

0

0

0

>〉 D=[A B] D =

0

0

0

0

0

0

0 >〉 F=[A;C] F =

0

0

0

0

0

0

0

0

拼接函数与变形函数法:

〉〉 clear 〉> A=[0 1;1 1] A =

0

〉> B=2*ones(2)

B =

>> cat(1,A,B,A)ans =

0

0

>〉 cat(2 A,B,A)

??? cat(2 A,B,A)Error: Unexpected MATLAB expression、>〉 cat(2,A,B,A)ans =

0

0

1 >〉 repmat(A,2,2)ans =

0

0

0

0

〉> repmat(A,2)ans =

0

0

练习:使用函数法、拼接法、拼接函数法与变形函数法,按照要求创建以下矩阵:A 为

得全1矩阵、B 为得 0 矩阵/C 为得单位矩阵、D 为得魔方阵、E 由 C

与D纵向拼接而成,F 抽取 E 得2—--5 行元素生成、G 由 F 经变形为得矩阵而得、以 G 为子矩阵用复制函数(repmat)生成得大矩阵H。

答案 :

>〉 A=ones(3,4)

A =

1 〉〉 B=zeros(3,3)B =

0

0

0

0

0

0

0

0 >〉 C=eye(3)

C =

0

0

0

0

>〉 D=magic(3)D =

>> E=[C;D] E =

0

0

0

0

0

〉〉 F=(2:5,:)??? F=(2:5,:)Error: Expression or statement is incorrect—-possibly unbalanced(, {, or [、>〉 F=E(2:5,:)F =

0

0

〉〉 G=respace(E,3,4)

??? Undefined mand/function “respace’、〉>

G=respace(F,3,4)

??? Undefined mand/function ”respace“、〉> G=reshape(F,3,4)

G =

0

0

0

0

〉〉 H=repmat(G,2,2)H =

0

0

0

0

0

0

0

0

0

2)矩阵得运算  矩阵得加减、数乘与乘法

已知矩阵: >> A=[1 2

-1], A =

-1 >〉 B=[-1 0

2] B =

0

>〉 A+B ans =

1 〉〉 2*A ans =

-2 >〉 2*A-3*B ans =

-8 〉〉 A*B ans =

4-4

—2  矩阵得逆矩阵 〉〉 format rat;A=[1 0 1;2 1 2;0 4 6] A =

0

>> A1=inv(A)A1 =

—1/3

2/3

-1/6

-2

0

4/3

-2/3

1/6

>〉 A*A1

ans =

0

0

0

0

0

矩阵得除法 >〉 a=[1 2 1;3 1 4;2 2 1],b=[1 1 2],d=b’ a =

b =

d =

>> c1=b*inv(a),c2=b/a c1 =

6/7

3/7

-4/7

c2 =

6/7

3/7

-4/7

>> c3=inv(a)*d, c4=ab c3 =

2/7

-4/7

??? Error using ==〉 mldivide Matrix dimensions must agree、>〉 c3=inv(a)*d,c4=ad c3 =

2/7

-4/7

c4 =

2/7

-4/7

练习: 按下列要求求出各种得矩阵运算得值

求矩阵得秩、特征值与特征向量、矩阵得乘幂与开方;

矩阵得指数与对数

矩阵得提取与翻转 答案:

〉〉 A=[6 3

4 3

—2 5 7 —4

8-1 —3 —7] A =

-4

-1

—3

—7 〉> B=rank(A)B =〉> rb=rank(A)

rb =>> [X,Lamda]=eig(A)

??? Error using ==〉 eig Matrix must be square、〉〉 [X,Lamda]=eigs(A)??? Error using ==〉 eigs A must be a square matrix or a function which putes A*x、〉〉 C=[6 3 4

-2 5 7

—1-3] C =

—2

—1

—3 >> [X,Lamda]=eigs(C)

X =0、8013

-0、1094

-0、1606

0、3638

—0、6564

0、86690、4749

0、7464

-0、4719 Lamda =9、7326

0

0

0

-3、2928

0

0

0

1、5602 〉〉 [X,Lamda]=eig(C)

X =

0、8013

—0、1094

—0、16060、3638

—0、6564

0、86690、4749

0、7464

-0、4719 Lamda =9、7326

0

0

-3、2928

0

0

0

1、5602 〉> [X,Lamda]=eig(C)

X =

0、8013

—0、1094

-0、1606

0、3638

—0、6564

0、8669

0、4749

0、7464

—0、4719 Lamda =9、7326

0

0

0

—3、2928

0

0

0

1、5602 〉> D=A^2 ??? Error using ==> mpower Matrix must be square、〉> D=C^2 D =

33

34

〉〉 E=sqrtm(C)E =

2、2447 + 0、2706i0、6974 — 0、1400i0、9422-0、3494i

-0、5815 + 1、6244i

2、1005-0、8405i

1、7620-2、0970i

1、9719 - 1、8471i

-0、3017 + 0、9557i

0、0236 + 2、3845i >> F=expm(C)F =

1、0e+004 *

1、0653

0、5415

0、6323

0、4830

0、2465

0、2876

0、6316

0、3206

0、3745 〉〉 G=logm(C)Warning: Principal matrix logarithm is not defined for A with

nonpositive real eigenvalues、A non-principal matrix

logarithm is returned、〉 In funm at 153

In logm at 27 G =

1、7129 + 0、4686i0、5305-0、2425i0、5429-0、6049i

1、1938 + 2、8123i0、3658 — 1、4552i

—0、5514-3、6305i

-0、0748 - 3、1978i

0、7419 + 1、6546i1、8333 + 4、1282i >> H=fliplr(C)H =

-2

—1

>> I=triu(C)I =

0

0

-3 〉〉 J=tril(C)

J =

0

0

-2

0

-3 >> K=diag(C)K =

6-3 3.多维数组得创建及运算 1)多维数组得创建 >〉 A1=[1,2,3;4 5 6;7,8,9];A2=reshape([10:18],3,3)A2 =

10

13

16

14

17

12

15〉〉 T1(:,:,1)=ones(3);T1(:,:,2)=zeros(3)T1(:,:,1)

=

T1(:,:,2)=

0

0

0

0

0

0

0 〉> T2=ones(3,3,2)

T2(:,:,1)=

1 T2(:,:,2)=

1 >> T3=cat(3,A1,A2),T4=repmat(A1,[1,1,2])

T3(:,:,1)=

T3(:,:,2)=

10

13

16

17

15T4(:,:,1)

=

T4(:,:,2)=

2)多维数组得创建

数组运算用小圆点加在运算符得前面表示,以区分矩阵得运算。特点就是两个数组相对应得元素进行运算。

〉〉 A=[1:6];B=ones(1,6);>> C1=A+B,C2=A—B C1 =

C2 =

0

>> C3=A、*B,C4=B、/A,C5=A、B C3 =

6 C4 =

1、0000

0、5000

0、3333

0、2500

0、2000

0、1667 C5 = 1、0000

0、5000

0、3333

0、2500

0、2000

0、1667

关系运算或逻辑运算得结果都就是逻辑值.>〉 I=A〉3,C6=A(I)

I =

0

0

0

1 C6 =

6 〉〉 A1=A-3,I2=A1&A A1 =

—2

—1

0

I2 =

0

〉〉 I3=~I I3 =

0

0 4.字符串得操作 1)字符串得创建

>〉 S1=”Ilike MATLAB’ S1 = Ilike MATLAB >> S2=“I'’m a stuent、” S2 = I“m a stuent、〉> S3=[S2,”and’,S1] S3 = I“m a stuent、andIlike MATLAB 2)求字符串长度 〉〉 length(S1)ans =>> size(S1)ans =

13)字符串与一维数值数组得相互转换 >> CS1=abs(S1)CS1 =

101

32

65

84

66 〉> CS2=double(S1)CS2 =

108

105

101

32

77

65

76

>> char(CS2)

ans = Ilike MATLAB >> setstr(CS2)

ans = Ilike MATLAB 练习:用char()与向量生成得方法创建如下字符串AaBbCc、、、、、、XxYyZz、〉> S1=65:90;S2=97:122;〉〉 C=[S1;S2];>>

C=C(:)’;〉>

S3=double(C);char(S3)ans = AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz 实验三

MAL TAB B 数值运算 一、实验目得

掌握 MATLAB 得数值运算及其运算中所用到得函数,掌握结构数组与细胞数组得操作。

二、实验内容

1)

多项式运算。

2)

多项式插值与拟合。

3)

数值为积分。

4)

结构数组与细胞数组。

三、实验步骤

1、多项式运算

1)

多项式表示。在 MATLAB 中,多项式表示成向量得形式.如: 在 MATLAB 中表示为 >> s=[1 3-5 0 9] 2)

多项式得加减法相当于向量得加减法,但必须注意阶次要相同。如不同,低阶次得要补 0。如多项式与多项式相加。

〉> s1=[0 0 2 3 11] 〉〉 s2=[1 2 —5 4 7] 〉〉 s3=s1+s2 答;s1 =

0

0

3s2 =

—5

s3 =

—3

18 3)

多项式得乘、除法分别用函数 conv与得 deconv实现。

〉> s1=[2 3 11] >> s2=[1 3 —5 4 7] >〉 s3=conv(s1,s2)

>> s4=deconv(s3,s1)答;s1 =

11 s2 =

s3 =

—29

65

s4 =

7 4)

多项式求根用函数roots。

>〉 s1=[2 4 2] >> roots(s1)

答;s1 =

ans =

—1

5)

多项式求值用函数 polyval >> s1=[2 4 1-3] 〉〉 polyval(s1,3)

〉> x=1:10 〉〉 y=polyval(s1,x)答;s1 =

-3 ans =

90 x =

10 y =

Columns 1 through 8

193

352

579

886

1285

Columns 9 through 10 练习:求得“商”及余数.〉> s1=[1 0 1];s2=[1 3];s3=[1 1]; 〉> s4=[1 0 2 1]; >> [q,r]=deconv(conv(conv(s1,s2),s3),s4)答;q =

4 r =

0

0

-1 2、多项式插值与拟合 有一组实验数据如附表 1—1 所示。

附表 1-1 X 1 2 3 4 5 6 7 8 9 10 Y 16 32 7

1

分别用拟合(二阶至三阶)与插值(线性与三次样条)得方法来估算X=9、5 时 Y 得值。以下就是实现一阶拟合得语句。

〉> x=1:10 >〉 y=[16 32 70 142 260 436 682 1010 1342 1960] 〉> p1=polyfit(x,y,1)

%一阶拟合 >> y1=polyval(p1,9、5)

%计算多项式 P1 在x=9、5 得值 答;x =

9y =

Columns 1 through 8

32

70

142

260

436

682

1010

Columns 9 through 10

1342

1960 p1 =

200、9818 -510、4000 y1 =1、3989e+003 3、数值微积分

1)

差分使用 diff 函数实现。

>〉 x=1:2:9 〉〉 diff(x)答;x =

ans =

2 2)

可以用因变量与自变量差分得结果相处得到数值微分。

〉> x=linspace(0,2*pi,100);>〉 y=sin(x); >〉 plot(x,y)>〉 y1=diff(y)、/diff(x); 〉〉 plot(x(1:end-1),y1)答;

3)

cumsum 函数求累计积分,trapz 函数用梯形法求定积分,即曲线得面积。

〉〉 x=ones(1,10)

>> cumsum(x)>> x=linspace(0,pi,100); >> y=sin(x); 〉〉 trapz(x,y)〉> p=cumsum(y); >> p(100)*pi/(100—1)答;x =

ans =

9ans =

1、9998 ans =

1、9998 练习:图 A1就是瑞士地图,为了算出其国土面积,首先对地图作如下测量:以由西向东方向为 X 轴,由南向北方向为 Y 轴,选择方便得原点,并将从最西边界点到最东边界点在 X 轴上得区间适当划分为若干段,在每个分点得Y方向测出南边界点与北边界点得 Y 坐标Y1与 Y2,这样就得到表 1,根据地图比例尺回到18mm相当于 40Km,试由测量数据计算瑞士国土近似面积,与其精确值 41228 比较。地图得数据见附表 1—2(单位mm).附表 1—2 X 7 10、5 13 17、5 34 40、5 44、5 48 56 61 68、5 76、5 80、5 91 Y1 44 45 47 5

34 41 45 46 Y2 44 59 7

18 1 18 续表 X 96 101 104 106、5 111、5 118 123、5 1 36、5 142 146 150 157 158 Y1 43 37 33 28 32 65 55 54 52 50 66 66 68 Y2 121 124 1 21 1 21 121 116 1 22 83 81 82 86 85 68 提示:由高等数学得知识,一条曲线得定积分就是它与 x 轴所围成得面积,那么两条曲线所围成得面积可由两条曲线得定积分相减得到。、结构数组与细胞数组 1)

机构数组得创建. 〉> student、number=’20050731001’;〉〉 student、name=’Jack”;〉〉 student(2)、number=’20050731002’;〉〉 student(2)、name=’Lucy“; >> student 或者用 struct 函数创建。

>> student=struct(”number“,{’001”,“002’},”name',{'Jack’,“Lucy’});答;student =

1x2 struct array with fields:

number

name 2)

机构数组得操作。

〉> student(1)、subject=[]

%添加 subject 域并赋予空值 〉〉 student(1)、score=[] >〉(studeng)〉>fieldnames(studeng)

〉>fieldnames(student)

〉〉 getfield(student,{2},'name')〉〉 student=rmfield(student,”subject’)

%删除 subject 域 〉〉 student=setfield(student,{1},“score’,90);>> student(2)、score=88;

%比较与上一条语句就是否效果一样 答;student =

1x2 struct array with fields:

number

name

subject student =

1x2 struct array with fields:

number

name

subject

score ??? Undefined function or variable ’studeng’、练习:创建一结构数组stusorce,其域为:No,Name,English,Math,Chinese,Total,Average。结构数组得大小为 2×2。

3)

细胞数组得创建。

〉> A={’How are you!”,ones(3);[1 2;3 4],{“cell’}};

%直接创建

〉〉 B(1,1)={’Hello world”};

%由各个细胞元素创建

>> B(1,2)={magic(3)};

>〉 B(2,1)={[1 2 3 4]};答

或者用cell 函数先创建空得细胞数组,然后再给各个元素赋值 c=cell(1,2); >> c(1,1)={’Hello world’};>> c(1,2)={magic(3)}; 〉〉 c(1,3)={[1 2 3 4]}; 4)

细胞数组得操作。

〉> ans1=A(1,1)>> ans2=A(1,1)>〉 whos ans1 ans2 〉〉 celldisp(A)〉> a1=A{2,1}(1,2)>〉 [a2 a3]=deal(A{1:2})

答;ans1 =

’How are you!’ ans2 =

’How are you!’

Name

Size

Bytes

Class

Attributes

ans1

1x1

84

cell

ans2

1x1

84

cell

A{1,1} = How are you!

A{2,1} =

A{1,2} =

A{2,2}{1} = cell a1 =a2 = How are you!a3 =

实验四

MA LT AB B 符号运算

一、实验目得

掌握符号变量与符号表达式得创建,掌握MALTAB得symbol工具箱得一些基本运用。

二、实验内容

1)

符号变量、表达式、方程及函数得表示。

2)

符号微积分运算.

3)

符号表达式得操作与转换.4)

符号微分方程求解.三、实验步骤1、符号运算得引入

在数值运算中如果求,则可以不断让得让x趋近0,一球得表达式趋近什么数,但终究不能令 x=0,因为在数值运算中 0 不就是能作除数得。MATLAB得符号运算能解决这内问题。输入如下命令: 〉> f=sym(’sin(pi*x)/x')

>> limit(f,’x“,0)答;f = sin(pi*x)/x ans = pi 2 2、符号常量、符号变量、符号表达式得创建

1)

使用 sym()创建 输入以下命令,观察 Workspace 中 A、B、f就是什么内性得数据,占用多少字节得内存空间。

>〉 A=sym(”1’)

%符号常量 〉〉 B=sym(’x’)

%符号变量 >> f=sym(’2*x^2+3*x-1’)

%符号表达式 >> clear >> f1=sym(“1+2”)

%有单引号,表示字符串 >〉 f2=sym(1+2)

%无单引号 >〉 f2=sym(1+2)

〉> f4=sym(“2*x+3’)

%为什么出错 〉〉 x=1 〉〉 f4=sym(2*x+3)

答;A = 1 B = x f = 2*x^2+3*x-1 f1 = 1+2 f2 = 3 f2 = 3 f4 = 2*x+3 x =f4 = 5 通过瞧 MATLAB 得帮助可知,sym()得参数可以使字符串或就是数值类型,无论就是哪种类型都会生成符号类型数据。

2)

使用 syms创建 〉> clear >〉 syms x y z 〉> x,y,z 〉〉 f1=x^2+2*x+1 >〉 f2=exp(y)+exp(z)^2 >> f3=f1+f2 答;x = x y = y z = z f1 = x^2+2*x+1 f2 = exp(y)+exp(z)^2 f3 = x^2+2*x+1+exp(y)+exp(z)^2 3 3、符号矩阵创建

>〉 syms a1 a2 a3 a4 〉〉 A=[a1 a2;a3 a4] 〉> A(1),A(3)答;A = [ a1,a2] [ a3, a4] ans = a1 ans = a2 4 4、符号算术运算

1)

符号向量相乘、相除 符号量相成与数值量相乘一样,分成矩阵乘与数组乘。

〉> a=sym(5);b=sym(7); 〉> c1=a*b >〉 c2=a/b >> a=sym(5);B=sym([3 4 5]);>〉 C1=a*B,C2=aB >> syms a b >> A=[5 a;b 3];B=[2*a b;2*b a];〉> C1=A*B,C2=A、*B >〉 C3=AB,C4=A、/B 答;c1 =

35 c2 = 5/7 C1 = [ 15, 20, 25] C2 = [ 3/5, 4/5,1] C1 = [ 10*a+2*a*b,5*b+a^2] [

2*a*b+6*b,b^2+3*a] C2 = [

10*a,a*b] [ 2*b^2,3*a] C3 = [

2*a*(b—3)/(—15+a*b),(a^2-3*b)/(—15+a*b)] [

2*b*(a-5)/(-15+a*b), —(5*a-b^2)/(-15+a*b)] C4 = [ 5/2/a,a/b] [

1/2, 3/a] 2)

符号数值任意精度控制与运算 任意精度得 VPA 运算可以使用命令 digits(设定默认得精度)与vpa(对指定对象以新得精度进行计算)来实现。

>〉 a1=sym(’2*sqrt(5)+pi')

〉> a=sym(’2*sqrt(5)+pi’)〉〉 b=sym(2*sqrt(5)+pi)

>> digits >> vpa(a)>> digits(15)>〉 vpa(a)〉〉 c1=vpa(a,56)

〉〉 c2=vpa(b,56)

答 a1 = 2*sqrt(5)+pi a = 2*sqrt(5)+pi b = 8572296331135796*2^(-50)

Digits = 32 ans = 7、637263128 ans = 7、637 c1 = 7、6372631285535581572696

c2 = 7、6372726175781250000000 注意观察c1 与c2 得数值类型,c1 与 c2 就是否相等。

3)

符号类型与数值类型得转换 使用命令sym可以把数值型对象转换成有理数性符号对象,命令vpa可以讲数值型对象转换为任意精度得 VPA 型符号对象.使用 double,numeric 函数可以将有理数型与 VPA 型符号对象转换成数值对象、〉> clear >〉 a1=sym('2*sqrt(5)+pi’)

>〉 b1=double(a1)

%符号转数值 >> b2=isnumeric(b1)

%判断就是否转换成了数值 >> a2=vpa(a1,70)

%数值转符号 答;a1 = 2*sqrt(5)+pi b1 =7、6137 b2 =

1 a2 = 7、6372631285535589083128858 5 5、、符号表达式得操作与转换

1)独立变量得确定原则 独立变量得确定原则:在符号表达式中默认变量就是惟一得.MATLAB 会对单个英文小写字母(除 i、j外)进行搜索,且以 x 为首选独立变量。如果表达式中字母不唯一,且无 x,就选在字母表最接近x 得字母.如果有相连得字母,则选择在字母表中较后得那一个。例如:中,y 就是默认独立变量。,t 就是默认独立变量。

输入以下命令,观察并分析结果。

>> clear >〉 f=sym(”a+b+i+j+x+y+xz’)

>〉 findsym(f)

〉> findsym(f,1)>〉 findsym(f,2)>> findsym(f,3)

>〉 findsym(f,4)〉〉 findsym(f,5)>〉 findsym(f,6)答;f = a+b+i+j+x+y+xz ans = a, b, j,x,xz, y ans = x ans = x,xz ans =

x,xz,y ans = x,xz,y,j ans = x,xz,y,j,b ans = x,xz,y,j,b,a 2)符号表达式得化简 符号表达式化简主要包括表达式美化(pretty)、合并同类项(collcet)、多项式展开(expand)、因式分解(factor)、化简(simple或 simplify)等函数。

①合并同类项(collect)。分别按 x 得同幂项与e指数同幂项合并表达式: . 〉〉 syms x t; >〉 f=(x^2+x^exp(—t)+1)*(x+exp(-t));〉〉 f1=collect(f)〉〉 f2=collect(f,’exp(-t)“)答;f1 = x^3+exp(-t)*x^2+(x^exp(-t)+1)*x+(x^exp(-t)+1)*exp(-t)

f2 =(x^2+x^exp(-t)+1)*exp(-t)+(x^2+x^exp(—t)+1)*x ②对显示格式加以美化(pretty)。针对上例,用格式美化函数可以使显示得格式更符合数学书写习惯。

>〉 pretty(f1)>〉 pretty(f2)

答;f1 = x^3+exp(-t)*x^2+(x^exp(—t)+1)*x+(x^exp(—t)+1)*exp(-t)

f2 =(x^2+x^exp(-t)+1)*exp(-t)+(x^2+x^exp(—t)+1)*x >〉

pretty(f1)pretty(f2)

exp(-t)

exp(-t)

x

+ exp(—t)

x

+(x

+ 1)

x +(x

+ 1)exp(—t)

exp(—t)

exp(-t)

(x

+ x

+ 1)exp(-t)+(x

+ x

+ 1)x 注意与直接输出得 f1 与 f2 对比。

③多项式展开(expand)。展开成 x 不同次幂得多项式、〉> syms x 〉> f=(x—1)^12;〉> expand(f)〉〉 pretty(expand(f))

答;ans = 1+x^12-12*x^11+66*x^10—220*x^9+495*x^8—792*x^7+924*x^6-792*x^5+495*x^4-220*x^3+66*x^2—12*x

+ x

- 12 x

+ 66 x

— 220 x

+ 495 x

x

+ 924 x

- 792 x

+ 495 x

- 220 x

+ 66 x

- 12 x ④ 因式分解(factor)。将表达式做因式分解。

>> syms x;f=x^12—1; 〉> pretty(factor(f))

答;ans = 1+x^12—12*x^11+66*x^10—220*x^9+495*x^8-792*x^7+924*x^6—792*x^5+495*x^4—220*x^3+66*x^2-12*x

12

11

+ x

— 12 x

+ 66 x

— 220 x

+ 495 x

x

+ 924 x

— 792 x

+ 495 x

— 220 x

+ 66 x

- 12 x 〉〉 syms x;f=x^12—1;pretty(factor(f))

(x-1)(1 + x

+ x)(1 + x)

(1 — x + x)(1 + x)(x

— x

+ 1)⑤化简(simple或 simplify)。

将函数化简.〉〉 clear 〉〉 syms x;f=(1/x^3+6/x^2+12/x+8)^(1/3); 〉> g1=simple(f)>〉 g2=simplify(f)

答;g1 =(2*x+1)/x g2 =((2*x+1)^3/x^3)^(1/3)6 6、符号表达式得变量替换

subs 函数可以对符号表达式中得符号变量进行替换 >> clear >> f=sym(’(x+y)^2+4*x+10’)〉〉 f1=subs(f,’x',’s')

%使用 s 替换x >〉 f2=subs(f,”x+y’,“z’)答;f =(x+y)^2+4*x+10 f1 =(s+y)^2+4*s+10 f2 = z^2+4*x+10 7、符号极限、符号积分与微分

1)

求极限函数得调用格式 limit(F,x,a)

%返回符号对象 F 当 x→a 时得极限 limit(F,a)

%返回符号对象 F 当独立变量*→a 时得极限

limit(F)

%返回符号对象 F 当独立变量→0(a=0)时得极限 limit(F,x,a,’right’)

%返回符号对象 F 当 x→a 时得右极限 limit(F,x,a,’left”)

%返回符号对象F当 x→a 时得左极限 例一:

〉〉 clear >> f=sym(“sin(x)/x+a*x”)

>〉 limit(f,“x’,0)

%以 x 为自变量求极限 >> limit(f,”a’,0)

%以 a 为自变量求极限 >> limit(f)

%在默认情况下以 x 为自变量求极限 >> findsym(f)

%得到变量并且按字母表顺序排列 答‘f = sin(x)/x+a*x ans = 1 ans = sin(x)/x ans = 1 ans = a,x 例二: >> clear >〉 f=sym('sqrt(1+1/n));

〉〉 limit(f,n,inf)

%求 n 趋于无穷大时得极限

2)

求积分函数得调用格式 int(F)

%求符号对象 F 关于默认变量得不定积分 int(F,v)

%求符号对象 F 关于指定变量 v 得不定积分 int(F,a,b)

%求符号对象 F 关于默认变量得从 a 到 b 得定积分 int(F,v,a,b)

%求符号对象 F 关于指定变量得从 a 到b得定积分 3)

求微分方程得调用格式 diff(F)

%求符号对象 F 关于默认变量得微分 diff(F,v)

%求符号对象 F 关于指定变量 v 得微分 diff(F,n)

%求符号对象 F 关于默认变量得 n 阶微分,n 为自然数 1、2、3…… diff(F,v,n)%求符号对象 F 关于指定变量 v 得 n 阶微分 8 8、符号方程求解

1)常规方程求解函数得调用格式 g=solve(eq)

%求方程(或表达式或字串)eq 关于默认变量得解

g=solve(eq,var)

%求方程(或表达式或字串)eq 关于指定变量 var 得解 g=solve(eq1,eq2,…、,eqn,var1,var2,…,varn)

%求方程(或表达式或字串)eq1,eq2,eq3,……eqn 关于指定变量组var1,var2,……,varn)得解 求一元二次方程得解.其求解方法有多种形式:

① seq=solve(“a*x^2+b*x+c')

② seq=solve(’a*x^2+b*x+c=0”)③ eq=’a*x^2+b*x+c“;④ eq=”a*x^2+b*x+c=0’; seq=solve(eq)

⑤sym x a b c

eq=a*x^2+b*x+c seq=solve(eq)

2)常微分方程求解 求解常微分方程得函数就是 dsolve。应用此函数可以求得常微分方程(组)得通解,以及给定边界条件(或初始条件)后得特解。

常微分方程求解函数得调用格式:

r=dsolve(“eq1,eq2,…’,’cond1,cond2,…’,’v’)r=dsolve(’eq1’,’eq2”,…,“cond1’,’cond2’,…,’v”)说明: ① 以上两式均可给出方程 eq1,、qeq2 对应初始条件 cond1、cond2 之下得一 v 作为解变量得各微分方程得解。

② 常微分方程解得默认变量为 t。

③ 第二式中最多可接受得输入式就是 12 个。

④ 微分方程得表达方法。

在用 MATLAB 求解常微分方程时,用大写字母 Dy表示,用D2y表示,依此类推。

边界条件以类似于 y(a)=b 给出。其中 y 为因变量,a、b 为常数、如果初始条件给得不够,求出得解为含有 C1、C2 等待定常数得通解。

例一 求微分方程得通解、练习:(1)求。

(2)求函数得积分;求函数得导数(3)计算定积分(4)求下列线性方程组得解

(5)求解但 y(0)=2,在 z(0)=7 时,微分方程组得解。

实验五

MATLA B 程序设计

一、实验目得

掌握 MATLAB 程序设计得主要方法,熟练编写 MATLAB函数、二、实验内容

(1)M 文件得编辑。

(2)程序流程控制结构。

(3)子函数调用与参数传递。

(4)局部变量与全局变量。

三、实验步骤1、M M 文件得编辑

选择MATLAB 得菜单,打开新得M文件进行编辑,然后输入以下内容,并保存文件名为 expl、m。

s=0;for n=1:100

s=s+n;end s 答;s =

5050 保存好文件后,在命令窗口输入expl 即可运行该脚本文件,主义观察变量空间。紧接着创建 M 函数文件,然后输入以下内容,并保存文件名为 expl2、m。

function s=expl2(x)

s=0;for n=1:x

s=s+n; end

保存好文件后,在命令窗口输入

>〉 clear 〉> s=expl2(100)以 open 命令可以打开 M 文件进行修改。

〉〉open conv

%打开 conv 函数 2 2、程序流程控制结构

1)

for 循环结构

>〉 for n=1:10 n end 答;n =n =n =n =n =n =

6 n =n =

n =n =

另一种形式得 for 循环: 〉> n=10:—1:5;>〉 for i=n

%循环得次数为向量 n 得列数 i end 答;i =

10 i =i =i =i =i =2)

while 循环结构 在命令窗口输入:

clear x=1;while 1 x=x*2 end 将会瞧到 MATLAB 进入死循环因为 while 判断得值恒为真,这时须按 Ctrl+C键来中断运行,并且可瞧到 x 得值为无穷大。

练习:

(1)请把 exp2、m函数文件用 while 循环改写。

(2)用公式求得近似值,直到最后一项得绝对值小于为止,试编写M脚本文件、3)

if-else—end 分支结构

if—else—end 分支结构有如下 3 种形式。

(a)

if

表达式 语句组 1 end(b)

if

表达式 语句组 1 else 语句组2 end(c)

if

表达式 A

语句组 1 else if 表达式 B 语句组 2 else if 语句组 3 …… else

语句组 n end 4)

switch—case结构 创建 M 脚本文件 exp3、m,输入以下内容并在命令窗口中运行。

%功能:判断键盘输入得数就是奇数还就是偶数 n=input(’n=');if isempty(n)

error(’please input n');

n=input(“n=’);end switch mod(n,2)

case 1

A=’奇数'

case 0

A=’偶数” End 答;n=input('n=’); if isempty(n)

error('please input n’);

n=input(“n=’); end switch mod(n,2)

case 1

A=”奇数“

case 0

A=”偶数' end n=1 A = 奇数 3、子函数与参数传递

有一个函数,试编写实现该函数得函数文件.function g=expl4(x)

%主函数 g=0;for n=1:x

g=g+fact(n);

%调用子函数 end

function y=fact(k)

%子函数 y=1; for n=1:k

y=y*n; end 输入参数可以有函数 nargin 计算,下面得例子 sinplot(),当知输入一个参数 w 时,sinplot()函数会给p赋予默认值 0。4、局部变量与全局变量

电机matlab实验报告 篇2

MATLAB软件因其强大的科学计算和图形处理功能, 已广泛应用于制作电机课件。从当前应用软件的发展趋势看, 友好的图形用户界面GUI已成为应用软件的基本交互接口, MATLAB软件也提供了对GUI的支持, 通过GUIDE开发工具或编写程序, 可以便捷地设计菜单化和控件式人机交互界面。本文设计的电机仿真实验系统是一种建立在MATLAB平台上的具有图形用户界面的软件, 它将理论教学与实验过程整合在一起, 可大大的提高课堂教学效率, 也能为学生自学提供很大的帮助, 具有很好的助学性。

一、系统功能和结构

本仿真平台采用模块化设计思想, 系统构架在逻辑设计中始终处于核心地位。整个软件的设计流程图如图1所示。

通过主界面选择电机类型, 接着确定实验项目, 调用相关的实验项目的子程序或二级界面, 在子程序或二级界面上可设定实验条件, 修改实验参数和仿真参数, 选择运行仿真实验后, 实验结果经快速计算, 尽可能图形化显示, 为便于观察, 实验曲线加适当标注, 实验完成后可返回主界面。

本仿真实验系统以MATLAB为开发平台, 依托其强大的科学计算和图形处理功能, 及提供的Power System专用工具箱, 可大大提高开发效率。MATLAB 7.x版中提供了实用的图形用户界面开发工具GUIDE, 它完全支持可视化编程, 较之程序语言开发系统, 其可操作性强, 开发效率高。本系统采用GUIDE设计主界面, 根据实验项目的特点不同, 分别采用GUIDE技术、Simulink建模, 或采用程序语言编写M文件等方法开发实验项目的二级界面或子程序。

二、GUI主界面设计

明确系统功能后, 从功能实现的角度构思主界面草图, 形成框架。在MATLAB的GUIDE界面的控件面板中提供了按钮、复选框、文本框、坐标系等控件, 主界面设计时首先设计控件。本文主界面设计了两个列表框:作为电机类型框和实验项目框, 分别通过这两个框选择实验电机类型和各种电机的实验项目;设计了静态文本框, 用于显示实验注释和实验说明, 包括显示实验接线图;设计了按钮, 用于运行和退出操作;设计了坐标轴, 用于加载图片, 根据设计原则和要求, 合理布局上述控件;其次确定界面和各控件的属性, 设定控件的Units、Position、Value、String、Tag等属性, 精确调整界面的位置和尺寸, 以及随窗口同比例缩放等功能;建立一级菜单file, 在其下设置子菜单项, 设置一级菜单和子菜单的属性, 得到仿真实验系统的GUI主界面如图2所示。

使用G U I D E创建的G U I界面保存为一个f i g资源文件, 同时自动生成一个M文件。该M文件包含了GUI初始化代码和组建界面布局的控制代码, 通过在M文件中修改和添加回调函数代码, 才能从主界面读取参数, 确定使用者选择的电机类型, 以在实验类型框中显示对应实验项目, 同时可以在实验原理窗口中显示对应的实验说明和实验电路图等, 并通过主界面的运行按钮调用对应的实验子系统或二级界面。

当用户选择或激活主界面相应控件时, 通过设置这些交互组件的回调函数来完成后台程序。使用者只和前台界面的控件发生交互, 而所有运算、绘图等操作都封装在内部, 终端用户不需要去追究这些复杂过程的实现方法就可以简单、快捷地使用软件, 了解实验原理和观察实验结果。

三、二级界面设计

在主界面上选择实验电机类型和实验项目后, 选择运行, 则调用某实验项目的二级界面。根据实验项目的不同, 二级界面的设计分别采用编辑M文件、利用GUIDE工具开发和利用Simulink环境设计。

在Simulink的Power system工具箱中, 提供了饱和变压器、线性变压器、笼型异步电机、绕线型异步电机、同步电机、直流电机等模型, 也提供了各种的测量模块, 利用这些模块可方便地搭建电机仿真实验电路。将实验电路封装后, 用户可提供对话窗修改实验参数和仿真参数, 如图3所示。在二级界面选择运行程序, 则仿真实验结果如图4所示, 图中为直流电机直接启动的转速和电流变化波形, 其中横轴为仿真实验时间。

图5为利用GUIDE工具开发的异步电动机转矩—转差率 (M-s) 测定曲线的二级界面图, 图中采用滑动块控件Slider, 该滑动模块用于改变实验参数 (绕线式电机转子回路电阻和定子电压) , 并使实验参数可在规定范围内调节, 通过编写回调函数将滑动块赋值取出给变量, 同时设定静态文本框显示出滑动块设定值。

程序运行后, 单击“运行”按钮, 运行结果如图5所示。修改界面参数后 (图中增大转子回路电阻) , 再次按下“运行”按钮, 则重新定子坐标尺寸, 画出新的M-s曲线, 并在曲线上显示新的最大转矩和启动转矩。如图5所示, 适当最大转子回路电阻, 可增大异步电机启动转矩, 而电机最大转矩不变。为比较参数变化对曲线的影响, 原M-s曲线保留。

四、结束语

依托M A T L A B强大的计算功能和丰富的图形处理功能, 基于MATLAB GUI设计电机仿真实验系统, 开发效率高, 方便建立人机交互的仿真平台, 便于演示及交互操作, 对研究参数变化对电机性能的影响, 并进一步丰富教学手段, 引导学生进行研究性学习有很好的辅助作用。

摘要:采用MATLAB GUIDE界面设计工具建立GUI界面, 将Simulink建模与M文件编程相结合, 设计了基于MATLAB GUI的电机仿真实验系统, 该系统界面友好、实验参数可修改, 交互性强、操作方便、性能可靠, 实验结果图形化显示, 可应用于电机学课堂教学和实验教学, 有很好的助学性。

关键词:MATLAB GUI,电机,仿真,实验

参考文献

[1]陈杰, MATLAB宝典[M].北京:电子工业出版社, 2007

[2]韩芝侠, 王强, 脱慧.基于MATLAB GUI的数字滤波器设计与实现[J].陕西理工学院学报, 2007, 3

电机学实验报告- 篇3

实验名称:异步电机实验实验类型:______________同组学生姓名:杨旭东 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得

一、 实验目的

1、测定三相感应电动机的参数

2、 测定三相感应电动机的工作特性

二、实验项目

1、空载试验 2、短路试验 3、负载试验

三、实验线路及操作步骤

电动机编号为D21,其额定数据:PN=100W,UN=220V,IN=0.48A,nN=1420r/min,R=40Ω,定子绕组△接法。

1、空载试验

(1)所用的仪器设备:电机导轨,功率表(DT01B),交流电流表(DT01B),交流电压表(DT01B)。

(2)测量线路图:见图4-4,电机绕组△接法。

(3)仪表量程选择:交流电压表 250V,交流电流表0.5A,功率表250V、0.5A。 (4)试验步骤:

安装电机时,将电机和测功机脱离,旋紧固定螺丝。

试验前先将三相交流可调电源电压调至零位,接通电源,合上起动开S1,缓缓升高电源电压使电机起动旋转,注意观察电机转向应符合测功机加载的要求(右视机组,电机旋转方向为顺时针方向),否则调整电源相序。注意:调整相序时应将电源电压调至零位并切断电源。

接通电源,合上起动开关S1,从零开始缓缓升高电源电压,起动电机,保持电动机在额定电压时空载运行数分钟,使机械损耗达到稳定后再进行试验。

调节电源电压由1.2倍(264V~66V)额定电压开始逐渐降低,直至电机电流或功率显著增大为止,在此范围内读取空载电压、空载电流、空载功率,共读取7~9组数据,记录于表4-3中。注意:在额定电压附近应多测几点。

试验完毕,将三相电源电压退回零位,按下电源停止按钮,停止电机。

表4-3

2、短路试验

(1)所用的仪器设备:同空载试验

(2)测量线路图:见图4-4,电机绕组△接法。

(3)仪表量程选择:交流电压表 250V,交流电流表1A,功率表250V、2A。

(4)试验步骤:

安装电机时,将电机和测功机同轴联接,旋紧固定螺丝,并用销钉把测功机的定子和转子销住。

首先将三相电源电压调至零位,接通电源,合上起动开关S1,逐渐升高电源电压至1.2倍额定电流,然后逐渐降压至0.3倍额定电流为止。在此范围内读取短路电压、短路电流、短路功率共4~5组数据,记录于表4-4中。

试验完毕,将三相电源电压退回零位,按下电源停止按钮,停止电机,并拔出销钉。 注意:试验时控制调节电源电压大小,并尽量减小电机试验时间。

3、负载试验

(1)所用的仪器设备:电机导轨,功率表(DT01B),交流电流表(DT01B),交流电压表(DT01B)。

(2)测量线路图:见图4-4,电机绕组△接法。

(3)仪表量程选择:交流电压表 250V,交流电流表1A,功率表250V、2.5A。 (4)试验步骤:

安装电机时,将电机和测功机同轴联接,旋紧固定螺丝。将三相电源电压调至零位,测功机旋钮调至零位。

接通电源,合上起动开S1,缓缓升高电源电压使电机起动。调节电源电压至额定电压,逐渐旋动测功机加载旋钮,使电机慢慢加载,此时电机的`电流逐渐上升,直至电流上升到1.25倍额定电流。从这点负载开始,逐渐减少负载直至空载,在此范围内读取异步电动机的定子电流、输入功率、转速、测功机转矩等数据,共读取5~6组数据,记录于表4-5中。

数据,共读取5~6组数据,记录于表4-5中。

四、 实验结果与分析

1. 计算基准工作温度时的相电阻。

基准工作温度的钉子绕组相电阻:

2. 作空载特性曲线 I0、P0、cosφ0=f(U0)

I0=f(U0)

P0=f(U0)

cosφ0=f(U0)

3. 作短路特性曲线Ik、Pk、cosφk=f(Uk)

Ik=f(Uk)

Pk=f(Uk)

cosφk=f(Uk)

4. 由空载和短路试验的数据求取异步电机等效电路中的参数 (1) 由短路试验数据求短路参数

短路阻抗:Zk=Uk/Ik=218.8Ω 短路电阻:Rk=Pk/(3*Ik*Ik)=50.9Ω 短路阻抗:Xk=(Zk^2-Rk^2)^1/2=212.7Ω 转子电阻的折算值:R2’=Rk-R1=1.5Ω

定转子绕组漏电抗:X1δ=X2δ=Xk/2=106.35Ω (2) 由空载实验数据求激磁回路参数

空载阻抗:Z0=U0/I0=1221.7Ω 空载电阻:r0=P0/(3*I0*I0)=158.3Ω 空载电抗:X0=(Z0^2-r0^2)^1/2=1211.4Ω 激磁电抗:Xm=X0-X1δ=1105.1Ω

激磁电阻:rm=Pfe/(3*I0*I0)=(26.1-16.40)/(3*I0*I0)=92.4Ω

5. 作工作特性曲线 P1、I1、T2、n、η、s、cosφ1=f(P2)。

P1=f(P2)

I1=f(P2)

M2=f(P2)

n=f(P2)

η=f(P2)

s=f(P2)

cosφ1=f(P2)

6. 由损耗分析法求额定负载时的效率

P1=120.62W Pcu1=10.57W Pfe=6.7W S=0.043 Pad=0.005P2 Pmec=16.4W

P1=p2+Pcu1+Pfe+S*Pem+P2 解之得:P2=99.02W η=P2/P1=82.1% 五、 思考题

1、由空载、短路试验所得的数据求取等效电路参数时,有哪些因素会引起误差?

(1)测量仪表本身存在误差;(2)实验条件非理想化,如空载实验不能完全做到真正空载;(3)短路实验中,定子转子电流会急剧增加,绕组发热产生误差;(4)三相并不严格对称,求解时取平均值计算引入误差;(5)求定子热态电阻时取75C°为热态温度,实际电机运行时受运行时间及电机具体状况的影响很可能不是75C°,因此产生了误差;(6)折算时忽略了铁耗功率以

及机械损耗

2、从短路特性曲线Ik=f(Uk)形状可以得出哪些结论? 短路电流随电压增大而增大,且与电压成线性关系。

3、试分析由直接负载法和损耗分析法求得的电动机效率各存在什么误差?

电机matlab实验报告 篇4

(以步机电机控制为例)

1.实验目的

①了解步进电机控制的基本原理。②掌握步进电机转动编程方法。

2.实验仪器

微型计算机、试验箱等

3.实验内容

①电路方案

②芯片介绍

③程序

ORG 0A30H

MONIT2: CJNE A,#16H,KEYDISP0 LCALL DISP

;? MONIT: MOV SP,#50H MOV 7EH,#00H MOV 7DH,#02H MOV R0,#7CH MOV A,#08H MOV R4,#04H DEC R0 DJNZ R4,MONIT1 MOV A,#7EH MOV DPTR,#1FFFH

;DISPFLAG MOVX @DPTR,A MOV 76H,#00H MOV 77H,#00H JC DATAKEY AJMP MONIT2 DB 79H,7EH SJMP KEYDISP0 MONIT1: MOV @R0,A KEYDISP0:LCALL KEY DATAKEY:LCALL DATAKEY1

MOV A,7AH ANL A,#0FH SWAP A ADD A,79H MOV R6,A MOV A,7CH ANL A,#0FH SWAP A ADD A,7BH MOV R7,A MOV A,7EH CJNE A,#00H,MONIT4 LCALL DELAY0 LCALL MONIT5 MOV P1,#06H LCALL DELAY0 LCALL MONIT5 MOV P1,#0CH LCALL DELAY0 LCALL MONIT5 MOV P1,#09H LCALL DELAY0 LCALL MONIT5 SJMP MONIT3 LCALL DELAY0 LCALL MONIT5 MOV P1,#0CH LCALL DELAY0 LCALL MONIT5 MOV P1,#06H LCALL DELAY0 LCALL MONIT5 MOV P1,#03H LCALL DELAY0 LCALL MONIT5 SJMP MONIT4 CJNE R6,#0FFH,MONIT6 DEC R7 CJNE R7,#0FFH,MONIT6 LJMP MONIT MONIT3: MOV P1,#03H MONIT4: MOV P1,#09H MONIT5: DEC R6 MONIT6: LCALL MONIT7 RET

MONIT7: MOV R0,#79H MOV A,R6 LCALL MONIT8 MOV A,R7 LCALL MONIT8 LCALL DISP RET MONIT8: MOV R1,A ACALL MONIT9 MOV A,R1 SWAP A MONIT9: ANL A,#0FH MOV @R0,A INC R0 RET DELAY0: MOV R0,#7DH MOV A,@R0 SWAP A MOV R4,A DELAY1: MOV R5,#80H DELAY2: DJNZ R5,DELAY2 LCALL DISP DJNZ R4,DELAY1

RET

DATAKEY1:MOV R4,A MOV DPTR,#1FFFH MOVX A,@DPTR MOV R1,A MOV A,R4 MOV @R1,A CLR A POP 83H POP 82H MOVC A,@A+DPTR INC DPTR CJNE A,01H,DATAKEY3 DEC R1 CLR A MOVC A,@A+DPTR DATAKEY2:PUSH 82H PUSH 83H;***

MOV DPTR,#1FFFH MOVX @DPTR,A POP 83H POP 82H INC DPTR PUSH 82H PUSH 83H RET MOV A,R1 SJMP DATAKEY2 MOV R6,#20H DATAKEY3:DEC R1 KEY0:

MOV DPTR,#1FFFH MOVX A,@DPTR MOV R0,A MOV A,@R0 MOV R7,A MOV A,#10H MOV @R0,A LCALL KEYDISP JNB 0E5H,KEY2 DJNZ R6,KEY3 MOV DPTR,#1FFFH

;*** MOVX A,@DPTR MOV R0,A MOV A,R7 MOV @R0,A LCALL KEYDISP

;***

;*** KEY3: KEY: MOV R6,#50H KEY1:

KEYDISP:LCALL DISP

LCALL KEYSM MOV R4,A MOV A,@R1

;KEYDATA MOV R1,#76H

;DATASAME TIME JNB 0E5H,KEY2 DJNZ R6,KEY1 SJMP KEY0 MOV R6,A MOV A,R7 MOV @R0,A MOV A,R6

;A=KEYDATA KEY2: KEYEND: RET

MOV R2,A INC R1 MOV A,@R1 MOV R3,A XRL A,R4

;TWO TIME KEYDATA

;NEW KEYDATA---R3

;TIME---R4 MOV R3,04H MOV R4,02H JZ KEYDISP1 MOV R2,#88H MOV R4,#88H MOV A,R4 XRL A,#82H JZ KEYDISP2 MOV A,R4

;R4=TIME XRL A,#0EH JZ KEYDISP2 MOV A,R4 ORL A,R4 JZ KEYDISP3 MOV R4,#20H

;R4=20H DEC R2 LJMP KEYDISP5

;LAST KEYDATA KEYDISP1:DEC R4 KEYDISP3:MOV R4,#0FH KEYDISP2:MOV R2,04H

DISP:

SETB 0D4H MOV R1,#7EH MOV R2,#20H MOV R3,#00H MOV DPTR,#0FF21H MOV A,R2 MOVX @DPTR,A MOV R4,03H MOV A,R2 MOV @R1,A INC R1 MOV A,R3 MOV @R1,A MOV A,R4

;**** CJNE R3,#10H,KEYDISP4 KEYDISP5:MOV R1,#76H KEYDISP4:RET

DISP1:

MOV DPTR,#DATA1 MOV A,@R1 MOVC A,@A+DPTR MOV DPTR,#0FF22H MOVX @DPTR,A DJNZ R3,DISP2 DEC R1 CLR C MOV A,R2 RRC A MOV R2,A JNZ DISP1 MOV A,#0FFH MOV DPTR,#0FF22H MOVX @DPTR,A CLR 0D4H RET DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH DISP2: DATA1: KEYSM: SETB 0D4H

MOV A,#0FFH MOV DPTR,#0FF22H MOVX @DPTR,A MOV R3,#08H MOV R0,#00H MOV DPTR,#0FF21H MOVX @DPTR,A NOP RL A MOV R2,A MOV DPTR,#0FF23H MOVX A,@DPTR CPL A NOP NOP NOP ANL A,#0FH JNZ KEYSM2 INC R0;NOKEY DJNZ R3,KEYSM1

;OFF DISP KEYSM0: MOV R2,#0FEH KEYSM1: MOV A,R2

SJMP KEYSM10

;YKEY JB 0E0H,KEYSM3 MOV A,#00H SJMP KEYSM7 MOV A,#08H SJMP KEYSM7 MOV A,#10H SJMP KEYSM7 MOV A,#18H CLR 0D4H CJNE A,#10H,KEYSM9 MOV DPTR,#DATA2 MOVC A,@A+DPTR DB 07H,04H,08H,05H,09H,06H,0AH,0BH KEYSM2: CPL A KEYSM3: JB 0E1H,KEYSM4 KEYSM4: JB 0E2H,KEYSM5 KEYSM5: JB 0E3H,KEYSM10 KEYSM7: ADD A,R0 KEYSM9: JNC KEYSM10 KEYSM10:RET DATA2: END DB 01H,00H,02H,0FH,03H,0EH,0CH,0DH ④调试

1步进电机插头插到实验系统J3插座中,P10—P13接到BA—BD插孔。

2在“P.”状态下,从起始地址开始(0A30H)连续执行程序。输入起始地址后按EXEC键。

3在键盘上输入数字在显示器上显示,第一位为0表示正转,为1表示反转,第二位0—F为转速等级,第三到第六位设定步数,设定完按EXEC键,步进电机开始旋转。

4.实验小结

电机matlab实验报告 篇5

1.要求

每位同学根据教材附录的matlab源码独立完成以下仿真要求,并将仿真代码和仿真结果写成实验报告,由各班统一收齐并于5月31日前提交。

2.仿真题目

(1)线性频谱搬移电路仿真

根据线性频谱搬移原理,仿真普通调幅波。

基本要求:载波频率为8kHz,调制信号频率为400Hz,调幅度为0.3;画出调制信号、载波信号、已调信号波形,以及对应的频谱图。

扩展要求1:根据你的学号更改相应参数和代码完成仿真上述仿真;载波频率改为学号的后5位,调制信号改为学号后3位,调幅度设为最后1位/10。(学号中为0的全部替换为1,例如学号2010101014,则载波为11114Hz,调制信号频率为114,调幅度为0.4)。

扩展要求2:根据扩展要求1的条件,仿真设计相应滤波器,并获取DSB-SC和SSB的信号和频谱。

(2)调频信号仿真

根据调频原理,仿真调频波。

基本要求:载波频率为30KHz,调制信号为1KHz,调频灵敏度kf23103,仿真调制信号,瞬时角频率,瞬时相位偏移的波形。扩展要求:调制信号改为1KHz的方波,其它条件不变,完成上述仿真。

3.说明

(1)仿真的基本要求每位同学都要完成,并且记入实验基本成绩。

(2)扩展要求可以选择完成,但需要进行相应的检查才能获得成绩。

(3)适用范围:通信工程2010级1、2班;微电子2010级1、2班

电机matlab实验报告 篇6

无刷直流电机具有高速动态响应、高效率、长寿命、低噪声和高转速等优点,此外无刷直流电机在调速方面相对其他电机还具有如下优点:噪音小、效率高和控制简单,因此无刷直流电机在工农业生产中具有广泛应用[1,2]。但是在无刷直流电机实际调速控制系统具体设计时,涉及到电机转自位置信号的检测问题,设计过程非常复杂,另外出现问题比较多,正是基于此原因,本文通过Matlab/Simulink环境中建立了无刷直流电机调速控制模型,通过仿真软件验证理论正确性,为实际调速控制系统设计扫除障碍,节省人力和物力,为其投入工农业生产打下基础。本文推断了无刷直流电机的数学模型,并在Matlab/Simulink中建立了调速控制系统,最后对仿真结果进行了分析。

1 无刷直流电机的数学模型分析

从无刷直流电机绕组三相电压平衡原理来建立无刷直流电机的数学模型,现为了简化分析,做如下假设[3]:

(1)定子绕组为60°相带整距集中绕组,且为星形连接;

(2)电机转子上面无阻尼绕组,磁体不起阻尼作用;

(3)忽略磁路饱和,不计算涡流损耗和磁滞损耗;

(4)忽略齿槽效应,三相绕组完全对称,且均匀分布在光滑的定子内表面;

(5)不考虑电枢反应,气隙磁场分布为近似的矩形波,平顶宽度为120°电角度。

从上面假设可以得出电机三相绕组的电压平衡方程如式(1)所示。

其中:ua、ub、uc为三相定子电压;rs为三相定子电阻;ia、ib、ic为三相定子电流;

Lab、Lac、Lbc、Lba、Lcb、Lca为三相定子绕组之间互感;La、Lb、Lc分别为定子各相绕组自感;ea、eb、ec分别为定子各相反定子绕组电动势;p为微分算子。

由假设条件(5)有:

上式中L为无刷直流电机定子绕组电感,M为定子绕组互感。又因为无刷直流电机定子绕组为星形连接,且无中线,则有:

将式(2)、(3)、(4)代入式(1),则式(1)可以改写成式(5)所示。

因此,无刷直流电机数学模型可以用图1等效表示[4]。

图1 BLDCM的数学模型等效图(参见下页)

其中,电机电磁转矩表达式为:

式中Te为电磁转矩,ωr为转子速度(rad/s)。

2 无刷直流电机PWM调速控制原理

由电机调速公式(7)可以知道调速方法有三种:调节电枢供电电压U、改变电枢回路串联电阻r和改变励磁磁通,其中改变电枢电压是目前直流调速的主要方法。而改变电枢电压常见的办法有三种:旋转变流机组、静止可控整流器和脉宽调制(PWM)变换器,在这里本文选择PWM调速方法。

无刷直流电机的PWM调速是将直流电源斩成PWM波,从而改变加在电枢两端的电压平均值,达到调节电动机转速的目的。

3 无刷直流电机调速控制系统在Matlab/Simulink中的建模与仿真

3.1 仿真模型的建立

图2是基于MATLAB无刷直流电机的仿真框图,该模型由电源、逆变电路、无刷直流电机电机本体、位置信号处理、PWM产生模块和反馈模块构成[4,5]。该模型采用双闭环控制,利用PWM进行调速。其调速的基本原理是给定速度与电动机转速相减比较后,输入到速度环和电流环计算出占空比信号,然后输入到位置信号处理和PWM模块,与霍尔信号进行逻辑运算以生成控制逆变桥的开关控制信号,从而达到控制无刷直流电机的可逆调速。

图2电机调速控制系统仿真模型(参见右栏)

3.2 仿真结果及分析

建立如图2所示的调速仿真模型以后,通过仿真得到如图3、4和5所示的仿真结果。其中图3为无刷直流电机定子相电流和反电动势仿真波形,图4为无刷直流电机转速响应仿真波形,图5为无刷直流电机转矩波形仿真波形。从以上仿真波形图看出电动机在起动时虽然电流和转矩都很大,但是转速在很短的时间内可以达到最大值,而且当给定信号为阶跃信号时,因转速最大超调量较小,故系统平稳性较好,另外因为调节时间短,故系统动态响应速度较好。在调速控制仿真结果中可以看出,系统能很好地实现调速控制。综上所述:本系统已基本实现了无静差调速控制,因此为实际设计电路提供了参考。

4 结论

本文首先推断了无刷直流电机的数学模型,阐述了其PWM调速的原理,然后在Matlab/Simulink中建立了其仿真模型,最后对仿真结果进行分析,仿真结果表明理论分析的正确性,为无刷直流电机后续实际控制系统设计的设计奠定了基础。

参考文献

[1]荣军,杨航,李献,等.无刷直流电机在Matlab中的建模与仿真研究[J].湖南理工学院学报(自然科学版).2012,25(2):55-59.

[2]荣军,杨航,韩良,等.无刷直流电机PWM调速技术的建模与仿真[J].湖南理工学院学报(自然科学版).2012,25(3):53-58

[3]杨燕.舵用无位置传感器无刷直流电机控制器研究[D].西安:西北工业大学,2006.

[4]洪乃刚.电力电子和电力拖动控制系统的MATLAB仿真[M].北京:机械工业出版社,2006.

上一篇:个人信用记录影响下一篇:社区养老保险怎么办理