matlab实验报告

MATLAB

实验报

椭圆: 电气信息工程
学号:B10050922
陈明志
实验一:MATLAB言平台与SIMULINK工具箱

一、  目的与任

  1.学习了解MATLAB语言环境;

  2.练习MATLAB命令;

  4.掌握SIMULINK工具箱的应用。

二、内容与要求

1.实验内容

(1)学习了解MATLAB语言环境;  

(2)练习MATLAB命令的基本操作;

(3)掌握SIMULINK仿真环境的使用方法;

?(4) 掌握线性系统仿真常用基本模块的用法

2.要求

  按照实验文档的要求与步骤完成实验,撰写实验报告。

三、实验基本知识:

1.熟悉MATLAB环境:

MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器、文件和搜索路径浏览器。

2.掌握MATLAB常用命令

3.了解SIMULINK模块库中各子模块基本功能 ?

四、上机练习

1.学习使用help命令,例如在命令窗口输入help eye,然后根据帮助说明,学习使用指令eye(其它不会用的指令,依照此方法类推)

>> help eye

燛YE Identity matrix.

牋? EYE(N) is the N-by-N identity matrix.

牋? EYE(M,N) or EYE([M,N]) is an M-by-N matrix with 1's on

牋? the diagonal and zeros elsewhere.

牋? EYE(SIZE(A)) is the same size as A.

牋? EYE with no arguments is the scalar 1.

牋? EYE(M,N,CLASSNAME) or EYE([M,N],CLASSNAME) is an M-by-N matrix with 1's

牋? of class CLASSNAME on the diagonal and zeros elsewhere.

牋? Note: The size inputs M and N should be nonnegative integers.

牋? Negative integers are treated as 0.

牋? Example:

牋牋牋 x = eye(2,3,'int8');

牋? See also speye, ones, zeros, rand, randn.

牋? Overloaded methods:

牋牋牋 distributed/eye

牋牋牋 codistributor2dbc/eye

牋牋牋 codistributor1d/eye

牋牋牋 codistributed/eye

牋? Reference page in Help browser

牋牋牋 doc eye

2.任意创建3个变量,分别为数值、矩阵、字符串,保存到mydat.mat文件,再把my_data.mat文件中的变量读取到MatLab工作空间内;查找已创建变量的信息,删除变量;学习使用clc、clear,观察command window、command history和workspace等窗口的变化结果。

>> a=sym(2)

a =

2

>> b=[1 2 ;3 4]

b =

牋牋 1牋牋 2

牋牋 3牋牋 4

>> c=sym('tt')

c =

tt

>> save mydate a b c

>> load mydate a b c

>> clear a

>> find(a)

??? Undefined function or variable 'a'.

>> find(c)

??? Undefined function or method 'find' for input arguments of type

'sym'.

>> find(b)

ans =

牋牋 1

牋牋 2

牋牋 3

牋牋 4

3.请找出能进行?2维离散傅立叶变换?的指令(或称函数)名称,说出该函数有几种调用格式,并指出该函数文件的所在文件夹。

help fft2 ?

燜FT2 Two-dimensional discrete Fourier Transform.

牋? FFT2(X) returns the two-dimensional Fourier transform of matrix X.

牋? If X is a vector, the result will have the same orientation.

?

牋? FFT2(X,MROWS,NCOLS) pads matrix X with zeros to size MROWS-by-NCOLS

牋? before transforming.

?

牋? Class support for input X:

牋牋牋 float: double, single

?

牋? See also FFT, FFTN, FFTSHIFT, FFTW, IFFT, IFFT2, IFFTN.

牋? Reference page in Help browser

牋牋牋 doc fft2 ?

调用方式:Y=fft2(X),Y=fft2(X,N) ,Y=fft2(X,N,M),Y=fft2(X,[],N)

函数路径:MATLAB/Functions/Data Analysis/Fourier Transforms/fft2

4.在MATLAB指令窗中运行指令 (-32)^(1/5) 后,会得到 ?2 吗? 的全部方根有几个,并写出计算全部方根的M脚本文件

>> r=(-32)^(1/5)

r =

牋 1.6180 + 1.1756i

>> p=[1 0 0 0 0 32];

>> R=roots(p)

R =

? -2.0000牋牋牋牋?

? -0.6180 + 1.9021i

? -0.6180 - 1.9021i

牋 1.6180 + 1.1756i

牋 1.6180 - 1.1756i

Exm104.m

p=[1 0 0 0 0 32];

R=roots(p)

7.SIMULINK仿真实际应用

    1)利用SIMULINK求微分方程在初始条件情况下的解(mu=2,mu=100)。

          牋牋牋牋?SIMULINK仿真电路:

         

         

         

    2)完成教材[例7.2-1]的simulink仿真。

   

   

实验二? MATLAB的符号运算

符号计算的特点:一,运算以推理解析的方式进行,因此不受计算误差积累问题困扰;二,符号计算,或给出完全正确的封闭解,或给出任意精度的数值解(当封闭解不存在时);三,符号计算指令的调用比较简单;四,计算所需时间较长。在MATLAB中,符号计算虽以数值计算的补充身份出现,但涉及符号计算的指令使用、运算符操作、计算结果可视化、程序编制以及在线帮助系统都是十分完整、便捷的。

一、实验目的

1、熟悉符号对象和符号表达式;

2、掌握符号表达式和符号函数的操作;

3、学习利用符号代数方程的求解

二、实验基本知

1、基本运算指令 ;

2. 掌握符号运算的应用。

三、上机练习

1. (1)通过符号计算求的导数。(2)然后根据此结果,求

>> syms t

>> syms d positive

>> yp=sin(t);

>> df_p=limit((subs(yp,t,t+d)-yp)/d,d,0)

df_p =

cos(t)

>> t_pi_2=limit(df_p,t,pi/2)

t_pi_2 =

0

>> yn=sin(-t);

>> df_n=limit((yn-subs(yn,t,t-d))/d,d,0)

df_n =

-cos(t)

>> t_n0=limit(df_n,t,0)

t_n0 =

-1

2. 计算二重积分.

syms x y

f=int(int(x^2+y^2,y,1,x^2),x,1,2)

f =

1006/105

3. 已知

(1)求;(2)求.syms x y

f=x^2+y^2;

df2=diff(f,y,2)

df2 =

2

>> Fx=int(f,x,-1,1)

Fx =

2/3+2*y^2

4.解方程:

>> syms x

>> s=solve('3*x^2+4*x-6=0','x')

s =

?-2/3+1/3*22^(1/2)

?-2/3-1/3*22^(1/2)

5.已知方程:

(1)  求通解;(2)求满足的特解.

>> syms x y

>> y=dsolve('D3y+3*Dy+2*y=6','x')

y =

3+C1*exp((1+2^(1/2))^(1/3)*(-1-(1+2^(1/2))^(1/3)+(1+2^(1/2))^(1/3)*2^(1/2))*x)+C2*exp(-1/2*(1+2^(1/2))^(1/3)*(-1-(1+2^(1/2))^(1/3)+(1+2^(1/2))^(1/3)*2^(1/2))*x)*sin(1/2*3^(1/2)*(1+2^(1/2))^(1/3)*(1-(1+2^(1/2))^(1/3)+(1+2^(1/2))^(1/3)*2^(1/2))*x)+C3*exp(-1/2*(1+2^(1/2))^(1/3)*(-1-(1+2^(1/2))^(1/3)+(1+2^(1/2))^(1/3)*2^(1/2))*x)*cos(1/2*3^(1/2)*(1+2^(1/2))^(1/3)*(1-(1+2^(1/2))^(1/3)+(1+2^(1/2))^(1/3)*2^(1/2))*x)

?

?

>> y=dsolve('D3y+3*Dy+2*y=6','D2y(0)=1','Dy(0)=2','y(0)=3','x')

y =

3+(1/3*(1+2^(1/2))^(1/3)+1/6*(1+2^(1/2))^(2/3)-1/4*(1+2^(1/2))^(2/3)*2^(1/2)-1/12*(1+2^(1/2))^(1/3)*2^(1/2))*exp((1+2^(1/2))^(1/3)*(-1-(1+2^(1/2))^(1/3)+(1+2^(1/2))^(1/3)*2^(1/2))*x)+(1/3*3^(1/2)*(1+2^(1/2))^(1/3)-1/12*3^(1/2)*(1+2^(1/2))^(1/3)*2^(1/2)-1/6*3^(1/2)*(1+2^(1/2))^(2/3)+1/4*3^(1/2)*(1+2^(1/2))^(2/3)*2^(1/2))*exp(-1/2*(1+2^(1/2))^(1/3)*(-1-(1+2^(1/2))^(1/3)+(1+2^(1/2))^(1/3)*2^(1/2))*x)*sin(1/2*3^(1/2)*(1+2^(1/2))^(1/3)*(1-(1+2^(1/2))^(1/3)+(1+2^(1/2))^(1/3)*2^(1/2))*x)+(-1/3*(1+2^(1/2))^(1/3)-1/6*(1+2^(1/2))^(2/3)+1/4*(1+2^(1/2))^(2/3)*2^(1/2)+1/12*(1+2^(1/2))^(1/3)*2^(1/2))*exp(-1/2*(1+2^(1/2))^(1/3)*(-1-(1+2^(1/2))^(1/3)+(1+2^(1/2))^(1/3)*2^(1/2))*x)*cos(1/2*3^(1/2)*(1+2^(1/2))^(1/3)*(1-(1+2^(1/2))^(1/3)+(1+2^(1/2))^(1/3)*2^(1/2))*x)

6.求方程 牋的解。

>> syms x y

>> s=solve('x^2+y^2=1','x*y=2','x','y')

s =

牋? x: [4x1 sym]

牋? y: [4x1 sym]

>> s.x

ans =

? -1/2*(1/2*5^(1/2)+1/2*i*3^(1/2))^3+1/4*5^(1/2)+1/4*i*3^(1/2)

? -1/2*(1/2*5^(1/2)-1/2*i*3^(1/2))^3+1/4*5^(1/2)-1/4*i*3^(1/2)

?-1/2*(-1/2*5^(1/2)+1/2*i*3^(1/2))^3-1/4*5^(1/2)+1/4*i*3^(1/2)

?-1/2*(-1/2*5^(1/2)-1/2*i*3^(1/2))^3-1/4*5^(1/2)-1/4*i*3^(1/2)

>> s.y

ans =

? 1/2*5^(1/2)+1/2*i*3^(1/2)

? 1/2*5^(1/2)-1/2*i*3^(1/2)

?-1/2*5^(1/2)+1/2*i*3^(1/2)

?-1/2*5^(1/2)-1/2*i*3^(1/2)

实验三牋 MATLAB的数值运算

一、实验目的

牋? 1.学习MATLAB的基本矩阵运算;

牋? 2.学习MATLAB的点运算;

3.学习复杂运算。

二、实验基本知

      1.基本矩阵运算;

      2.多项式运算;

      3.代数方程组;

      4.数值微积分。

三、上机练习

1. 给a,b,c赋如下数据:

1) 求a+b,a*b,a.*b,a/b,a./b,a^2,a.^2的结果.

a=[1,3,4;5,12,44;7,8,27]

a =

牋牋 1牋牋 3牋牋 4

牋牋 5牋? 12牋? 44

牋牋 7牋牋 8牋? 27

>> b=[-7,8,4;12,24,38;68,-5,3]

b =

牋? -7牋牋 8牋牋 4

牋? 12牋? 24牋? 38

牋? 68牋? -5牋牋 3

>> c=[1,0,8,3,6,2,-4,23,46,6]

c =

牋牋 1牋牋 0牋牋 8牋牋 3牋牋 6牋牋 2牋? -4牋? 23牋? 46牋牋 6

>> a+b

ans =

牋? -6牋? 11牋牋 8

牋? 17牋? 36牋? 82

牋? 75牋牋 3牋? 30

>> a*b

ans =

牋牋牋牋 301牋牋牋牋? 60牋牋牋牋 130

牋牋牋? 3101牋牋牋牋 108牋牋牋牋 608

牋牋牋? 1883牋牋牋牋 113牋牋牋牋 413

>> a.*b

ans =

牋牋牋牋? -7牋牋牋牋? 24牋牋牋牋? 16

牋牋牋牋? 60牋牋牋牋 288牋牋牋? 1672

牋牋牋牋 476牋牋牋牋 -40牋牋牋牋? 81

>> a/b

ans =

牋? 0.0966牋? 0.0945牋? 0.0080

牋 -3.6125牋? 1.5838牋 -0.5778

牋 -1.9917牋? 0.9414牋 -0.2682

>> a./b

ans =

牋 -0.1429牋? 0.3750牋? 1.0000

牋? 0.4167牋? 0.5000牋? 1.1579

牋? 0.1029 牋-1.6000牋? 9.0000

>> a^2

ans =

牋牋牋牋? 44牋牋牋牋? 71牋牋牋牋 244

牋牋牋牋 373牋牋牋牋 511牋牋牋? 1736

牋牋牋牋 236牋牋牋牋 333牋牋牋? 1109

>> a.^2

ans =

牋牋牋牋牋 1牋牋牋牋牋 9牋牋牋牋? 16

牋牋牋牋? 25牋牋牋牋 144牋牋牋? 1936

牋牋牋牋? 49牋牋牋牋? 64牋牋牋牋 729

2)求c中所有元素的平均值、最大值.

mean(c)

ans =

?9.1000

max(c)

ans =

46

3)求d=b(2:3,[1,3]).

d=b(2:3,[1,3])

d =

牋? 12牋? 38

牋? 68牋牋 3

2.求解方程,并对所得结果作出解释。

>> A=[1 2 3;4 5 6;7 8 9]

A =

牋牋 1牋牋 2牋牋 3

牋牋 4牋牋 5牋牋 6

牋牋 7牋牋 8牋牋 9

>> B=[1 0 0]'

B =

牋牋 1

牋牋 0

牋牋 0

>> X=A\B

X =

? 1.0e+015 *

牋 -4.5036

牋? 9.0072

牋 -4.5036

? ?3.已知有理分式,其中。求该分式的商多项式和余多项式。

>> n=conv([3,0,1,0],[1,0,0,0.5]);

>> d=conv([1,2,-2],[5,2,0,1]);

>> [q,r]=deconv(n,d);

>> cq=poly2str(q,'x')

商多项式:

cq =

牋 0.6 x - 1.44

>> cd=poly2str(r,'x')

余多项式:

cd =

牋 -4.4409e-016 x^6 + 8.8818e-016 x^5 + 21.88 x^4 - 5.34 x^3 - 5.52 x^2 + 4.58 x- 2.88

4.求解Lorenz模型的状态方程,并图示.

初值在(0,1)中取值

function dx=myfun(t,x)

dx=zeros(3,1);

dx(1)=16*(x(2)-x(1));

dx(2)=45*x(1)-x(2)-x(1)*x(3);

dx(3)=x(1)*x(2)-4*x(3);

>> [t,y]=ode45(@myfun,[0 1],[1 1 1]);

>> plot(t,y)

实验四 MATLAB语言绘图

一、实验目的:

1、学习MATLAB图形绘制的基本方法;

2、熟悉和了解MATLAB图形绘制程序编辑的基本指令;

3、熟悉掌握利用MATLAB图形编辑窗口编辑和修改图形界面,并添加图形的各种标注;

4、掌握plot、subplot的指令格式和语法。

二、实验基本知

1.plot(x,y)------绘制由x,y所确定的曲线;

2.图形窗口的分割;

3.图形编辑窗口的使用。

三、实验内容

1.用图形表示连续调制波形 y=sint*sin(9t)及其包络线。

>> t=(0:pi/100:pi)';

>> y1=sin(t)*[1,-1];

>> y2=sin(t).*sin(9*t);

>> t3=pi*(0:9)/9;

>> y3=sin(t3).*sin(9*t3);

>> plot(t,y1,'r:',t,y2,'-bo')

>> hold on

>> plot(t3,y3,'s','MarkerSize',10,' MarkerEdgeColor ',[0 1 0],'MarkerFaceColor',[1,0.8,0])

>> axis([0,pi,-1,1])

>> hold off

2.画出的曲线,在图上用?小红圈?标出第一次使y=0.6的那点位置。

>> fun=inline('exp(-0.5*t)*sin(t)-0.6'

fun =

牋牋 Inline function:

牋牋 fun(t) = exp(-0.5*t)*sin(t)-0.6

>> a=fzero(fun,0)

a =

牋 -3.2595

>> fplot(fun,[-2*pi,2*pi])

>> hold on

>> plot(a,0.6,'ro')

3.在同一个图形窗里画出实验三中第四题的三个输出,给出图题、横坐标、纵坐标名称。并利用图形编辑器将三幅图用不同的颜色和线性表示。

>> tspan=[0,30];

>> x0=[0.5;0.4;0.6];

>> [tt,xx]=ode45(@myfun,tspan,x0);

>> subplot(3,1,1),plot(tt,xx(:,1),'-r')

>> xlabel('t')

>> ylabel('x1(t)')

>> title('Lorenz模型图')

>> legend('\fontsize{14}\it x1(t)')

>> hold on

>> subplot(3,1,2),plot(tt,xx(:,2),'+g')

>> xlabel('t')

>> ylabel('x2(t)')

>> legend('\fontsize{14}\it x2(t)')

>> subplot(3,1,3),plot(tt,xx(:,3),'xb')

>> xlabel('t')

>> ylabel('x3(t)')

>> legend('\fontsize{14}\it x3(t)')

4.编写一个函数M文件,它的功能:没有输入量时,画出单位圆;输入量是大于2的自然数N时,绘制正N边形,图名应反映显示多边形的真实边数;输入量是?非自然数?时,给出?出错提示?(分别利用round和ceil函数,体会这两种函数的区别)。此外,函数M文件应有H1行、帮助说明和程序编写人姓名。

function exm404(n)

%exm404 function:draw unit circle or regular polygon of n sides.

%牋 n牋? The number of sides, while n>=3;

%牋 draw circle, while no parameter;

%牋 not a appropriate "n"? ,while n<3 or not natural number.

% edited by chenmingzhi, 25 May. 2012

if nargin~=0 & (n<0 | ceil(n)~=n)

牋? disp('Input parameter error! Please input natural number n larger than 2.')

else牋?

牋? switch nargin

牋牋牋 case 0

牋牋牋牋牋 m=100;t=(0:m)/m*2*pi;

牋牋牋牋牋 x=sin(t);y=cos(t);

牋牋牋牋牋 plot(x,y,'r','LineWidth',2.5);title('Circle')

牋牋牋牋牋 axis equal, axis off

牋牋牋 otherwise

牋牋牋牋牋 if n==1 | n==2,disp('please input n>=3')

牋牋牋牋牋 else

牋牋牋牋牋牋 t=(0:n)/n*2*pi;

牋牋牋牋牋? 爔=sin(t);y=cos(t);

牋牋牋牋牋牋 plot(x,y,'r','LineWidth',2.5);? title(['Poly gon nit',int2str(n),' edges'])

牋牋牋牋牋牋 axis equal, axis off

牋牋牋牋牋 end

牋? end

end

相关推荐