当前位置:文档之家› Matlab总结

Matlab总结

Matlab总结
Matlab总结

Matlab个人总结

matlab常用到的永久变量。

ans:计算结果的默认变量名。

i j:基本虚数单位。

eps:系统的浮点(F10a9Bg个oht):

inf:无限大,例1/0

nan NaN:非数值(N航a nmnb谢)

pi:圆周率n(n=3.1415926..)。

realmax:系统所能表示的最大数值。

realmin:系统所能表示的最小数值,

nargin:函数的输入参数个数:

nargout:函数的输出多数个数

①matlab的所有运算都定义在复数城上。对于方根问题运算只返回处于第一象限的解。

⑦matlab分别用左斜/和右\来表示“左除和“右除”运算。对于标量运算而言,这两者的作用没有区别:但对于矩阵运算来说,二者将产生不同的结果。

多项式的表示方法和运算

p(x)=x^3-3x-5可以表示为p=[1 0–3 5],求x=5时的值用plotval(p,5)

也可以求向量:a=[3 4 5],plotval(p,a)

函数roots求多项式的根roots(p)

p=[1 0 -3 5];

r=roots(p)

由根重组多项式poly(根)

q=poly(r)

real(q)有时会产生虚根,这时用real抽取实根即可

conv(a,b)函数多项式乘法(执行两个数组的卷积)

a=[1 2 3 4];

b=[1 4 9 16];

c=conv(a,b)

多项式的加减法,低阶的多项式必须用首零填补,使其与高阶多项式有同样的阶次

多项式除法[q , r]=deconv(c , b)表示b/c q为商多项式,r为余数

多项式的导数polyder(f)

f=[ 2 4 5 6 2 1];

s=polyder(f)

多项式的曲线拟合

x=[1 2 3 4 5];

y=[5.6 40 150 250 498.9];

p=polyfit(x,y,n)数据的n次多项式拟合poly:矩阵的特征多项式、根集对应的多项式

x2=1:0.1:5; n取1时,即为最小二乘法

y2=polyval(p,x2);计算多项式的值(polyvalm计算矩阵多项式)

plot(x,y,'*',x2,y2);grid on

最小二乘法

x=[1 2 3 4 5];

y=[5.6 40 150 250 498.9];

plot(x,y,’*’),lsl ine

多项式插值(p158)

YI=interp1(x,y,XI,’method’)一维插值

(XI为插值点的自变量坐标向量,可以为数组或单个数。

method为选择插值算法的方法,包括:

linear(线性插值)

cubic(立方插值)

spline(三次样条插值)

nearst(最近临插值)

例如:人口预测

year=1900:10:1900;

number=[78 91 105….每十年的人口数];

x=1900:1:2000;

y=interp1(year,number,x,’spline’);

plot(year,numeber,’*’,x,y);grid on

一维博里叶变换插值使用函数interpft实现,计算含有周期函数值的矢量的傅里叶变换

然后使用更多的点进行傅里叶变换的逆变换,函数的使用格式如下:y=interpft(x,n)其中x是含有周期函数值的矢量,并为等距的点,n为返同等间距点的个数。

求解一元函数的最小值

y=fminbnd('humps',0.3,1) humps为一内置函数

求解多元函数的最小值

函数fminserch用于求多元函数的最小值。它可以指定一个开始的矢量,并非指定一个区间。此函数返回一个矢量为此多元函数局部最小函数值对应的自变量

纹理成图功能

由warp函数的纹理成图功能实现平面图像在空间三维曲面上的显示。

将文件名为flowers.tif的图像分别投影到圆柱形和球星表面上

i=imread('flowers.tif');

[x,y,z]=cylinder;

subplot(1,2,1),warp(x,y,z,i);

[x,y,z]=sphere(50);

subplot(1,2,2),warp(x,y,z,i);

warp(x,y,z,i);

求函数的零点

求函数humps在[1,2]区间上的零点fzero(‘humps’,[1,2]);

也可以给一个初始值fzero(‘humps’,0.9);

对于多项式可直接由roots求其根roots(‘4*x^3+……’);

也可以用solve

c=sym('c','real');

x=sym('x','real');

s=solve(x^3-x+c)

函数定积分

q=quadl(‘humps’,0,1)求humps函数在0 1区间上的定积分,也可以用quad语句

二重积分首先计算内积分,然后借助内积分的中间结果再求出二重积分的值,类似于积分中的分步积分法。Result=dblquad(‘integrnd’,xin,xmax.,ymin,ymax) integrnd为被积函数的名称字符串

符号积分运算int(f)

最精确的是符号积分法

计算s=∫12[∫01xydx]dy

syms x y中间为空格,不能为逗号

s=int(int(‘x^y’,’x’,0,1),’y’,1,2)引号可省略

vpa(s)显示s的值

内积分限为函数的二重积分

I=∫14[∫√y2(x2+y2)dx]dy

符号法I=vpa(int(int(‘x^2+y^2’,’x’,sqrt(y),2),’y’,1,4)

微分运算(diff)

微分是描述一个函数在一点处的斜率,是函数的微观性质、因此积分对函数的形状在小范围内的改变不敏感,而微分很敏感。—个函数的小的变化,容易产生相邻点的斜率的大的改变。由干微分这个固有的困难.所以尽可能避免数值微分.特别是对实验获得的数据进行微分。在这种情况,最好用最小二乘曲线拟合这种数据,然后对所得到的多项式进行微分;或用另一种方法对点数据进行三次样条拟合,然后寻找样条微分,但是,有时微分运算是不能避免的,在MATLAB中.用函数diff汁算一个矢量或者矩阵的微分(也可以理解为差分)。

a=[1 2 3 3 3 7 8 9];

b=diff(a)一次微分

bb=diff(a,2)二次微分

实际上diff(a)=[a(2)-a(1),a(3)-a(2),……,a(n)-a(n-1)]

对于求矩阵的微分,即为求各列矢量的微分,从矢量的微分值可以判断矢量的单调性、是否等间距以及是否有重复的元素。

符号微分运算(diff)

syms x t a

f =cos(a*x)

df =diff(f)由findsym的规则,隐式的指定对x进行微分

dfa=diff(f,'a')指定对变量a进行微分

dfa=diff(f,'a',3)三次微分

diff函数不仅作用在标量上,还可以在矩阵上,运算规则就是按矩阵的元素分别进行微分

syms a x

A=[cos(a*x),sin(a*x),-sin(a*x),cos(a*x)];

dA=diff(A)

微分方程dsolve

在matlab中,符号表达式中包含字母D用来表示微分运算,D2,D3分别对应第二,第三阶导数,D2y表示d2y/dt2把t缺省了

y=dsolve(‘Dy=f(y)’)单个方程,单个输出

[u,v]=dsolve(‘Du=f(u,v)’,’Dv=g(u,v)’) 2个方程,2个输出

s=dsolve(‘Dx=f(x,y,z)’,’Dy=g(x,y,z)’,’Dz=k(x,y,z)’)

s.x s.y s.z 3个方程,架构数组

dsolve('Dx=-a*x')结果:C1*exp(-a*t)没给定初值,所以结果中含参变量

x=dsolve('Dx=-a*x','x(0)=1','s')结果exp(-a*s)给定了初值,独立变量设为s

计算多元函数的梯度

fx=gradient(f) f是一个矢量返回f的一维数值梯度,fx对应于x方向的微分。

[x,y]=meshgrid(-2:.2:2,-2:.2:2);

z=x.*exp(-x.^2-y.^2);

[px,py]=gradient(z,.2,.2);

contour(z),hold on画等值线

quiver(px,py)

matlab字符串运算

利用sym命令创建表达式

f=sym(‘cos(x)+sin(x)’)或syms x , f=cos(x)+sin(x)

diff(f)求其导数

(也可直接用命令f=diff(‘cos(x)+cos(y)’)

当字符表达式中含有多于一个的变量时,只有—个变量是独立变量。如果不告诉matlab哪一个变量是独立变量,则可以通过findsym命令询问

利用findsym命令查询独立变量

f=sym('sin(a*x)+b')

findsym(f,1)给出独立变量(一个变量,如果为2则给出2个变量)

findsym(f)给出所有变量

符号表达式的化简和替换

collect函数

在MA TLAB下,如果notebook不能正常使用,即在输入了notebook命令后,屏幕显示:>> notebook

??? Error using ==> notebook (getAndVerifyNotebookProfl)

Notebook has not been configured properly. Please run notebook -setup

Error in ==> C:\MA TLAB6P5\toolbox\matlab\general\notebook.m

On line 42 ==> [wordPath, wordTempPath] = getAndVerifyNotebookProfl; 这时可以使用以下命令对notebook 进行设置: >> notebook -setup

Welcome to the utility for setting up the MATLAB Notebook for interfacing MATLAB to Microsoft Word

Choose your version of Microsoft Word: [1] Microsoft Word 97 [2] Microsoft Word 2000

[3] Microsoft Word 2002 (XP) [4] Exit, making no changes

Microsoft Word Version: 3

Notebook setup is complete.

下面再输入MA TLAB 即可正常启动: >>notebook 5.2实验内容 1)至少用3种方法解方程组Ax=b ,如矩阵除法、求逆矩阵、通过初等变换将矩阵化为上(下)三角阵等,其中

?????????

???------=5407395012818053A ,????

?

?

??????-=6120b 方法1:a=[-3,5,0,8;1,-8,2,-1;0,-5,9,3;-7,0,-4,5];b=[0;2;-1;6];x=a\b x =

-0.6386 -0.4210 -0.3529 0.0237

解:方法2:A=inv(a);x=A*b

x = -0.6386 -0.4210 -0.3529 0.0237

方法3:[l,u]=lu(a);y=l\b,x=u\y

y = 6.0000 2.8571 -2.7857

0.1101 x = -0.6386 -0.4210 -0.3529 0.0237

2)设有分块矩阵???

?

??=????22322333S O R E A ,其中E ,R ,O ,S 分别为单位阵、随机阵、零阵和对角阵,试通过数值计算验证??

?

??

?+=22S O

RS R E A 。 解:

E=eye(3);R=rand(3,2);O=zeros(2,3);S=[2,0;0,3];A=[E,R;O,S],A*A,[E,R+R*S;O,S*S]

A =

1.0000 0 0 0.9218 0.4057 0 1.0000 0 0.7382 0.9355 0 0 1.0000 0.1763 0.9169 0 0 0

2.0000 0 0 0 0 0

3.0000 ans =

1.0000 0 0

2.7654 1.6228 0 1.0000 0 2.2146

3.7419 0 0 1.0000 0.5288 3.6676 0 0 0

4.0000 0 0 0 0 0 9.0000 ans =

1.0000 0 0

2.7654 1.6228 0 1.0000 0 2.2146

3.7419 0 0 1.0000 0.5288 3.6676 0 0 0

4.0000 0 0 0 0 0 9.0000

3)用命令magic(n)生成幻方矩阵,通过计算研究它的性质,如行和、列和、两条对角线和。 a=magic(3),s1=sum(a),s2=sum(a'),s3=sum(diag(a)),s4=sum(diag(fliplr(a)))

a =

8 1 6 3 5 7 4 9 2 s1 =

15 15 15 s2 =

15 15 15 s3 = 15 s4 = 15

4)设2

111

x

y +=,)2exp(22x y -=,x y 2sin 3=,244x y -=,在]2,2[-上适当离散化,计算21y y +,21y y ,13y y ,2

2145y y

y -。

x=-2:2;y1=1./(1+x.^2);y2=exp(-x.^2/2);y3=sin(2*x);y4=sqrt(4-x.^2); a=y1+y2,b=y1.*y2,c=y3./y1,d=(5*y4-y1)./y2.^2

a =

0.3353 1.1065 2.0000 1.1065 0.3353 b =

0.0271 0.3033 1.0000 0.3033 0.0271 c =

3.7840 -1.8186 0 1.8186 -3.7840 d =

-10.9196 22.1819 9.0000 22.1819 -10.9196 5)某公司有8种产品,其单件的成本、售价及一段时间的销量如下: 序号 1 2 3 4 5 6 7 8 成本(元) 8.25 10.30 6.68 12.03 16.85 17.51 9.30 10.65 售价(元) 15.00 16.25 9.90 18.25 20.80 24.15 15.50 18.25 销量

1205

580

395

2104

1538

810

694

1032

计算这段时间的收入和利润:问哪种产品利润最大,问哪种产品利润最小;将各种产品的收入作一排序。

cb=[8.25 10.30 6.68 12.03 16.85 17.51 9.30 10.65];

sj=[15.00 16.25 9.90 18.25 20.80 24.15 15.50 18.25];

xl=[1205 580 395 2104 1538

810 694 1032];

lr=sj-cb,sr=(sj-cb).*xl for i=1:8

if lr(i)==max(lr) i,lr(i) end

if lr(i)==min(lr) i,lr(i) end end

'sort:',e=sort(lr.*xl)

lr =

Columns 1 through 7

6.7500 5.9500 3.2200 6.2200 3.9500 6.6400 6.2000 Column 8

7.6000 sr =

1.0e+004 *

Columns 1 through 7

0.8134 0.3451 0.1272 1.3087 0.6075 0.5378 0.4303 Column 8 0.7843 i = 3 ans = 3.2200 i = 8 ans = 7.6000 ans = sort: e =

1.0e+004 *

Columns 1 through 7

0.1272 0.3451 0.4303 0.5378 0.6075 0.7843 0.8134 Column 8 1.3087

6)自己选择一非负单调减序列,用从1到n 和从n 到1两种顺序计算∑=n

k k a 1,观察哪个更准确些,

分析原因。如=∑=1000001

1

k k

s=0;

for k=1:100000 s=s+1/k; end

's(1,2,3,…,100000)=',s s1=0;

for k=100000:-1:1 s1=s1+1/k; end

's1(100000,99999,99998,…,1)=',s 1

ans =

s(1,2,3,…,100000)= s =

12.09014612986334

ans =

s1(100000,99999,99998,…,1)= s1 =

12.09014612986341

for k=1:100000 s=s-1/k;s1=s1-1/k; end s,s1

s =

-7.305902946150560e-014 s1 =

-2.283990460953331e-016

8)通过MATLAB 的帮助系统掌握roots,poly,polyval 的用法,并且用这些命令解以下问题: 1.已知一多项式的零点为{2,-3,1+2i,1-2i,0,-6}求这个多项式的系数(从高到低排列),并且计算多项式在点x=0.8,-1.2的值。

r=[2;-3;1+2i;1-2i;0;-6]; p=poly(r) r1=roots(p)

p =

1 5 -9 -1 7

2 -180 0 r1 =

0 -6.00000000000001 -3.00000000000000 1.00000000000000 + 2.00000000000000i 1.00000000000000 - 2.00000000000000i 2.00000000000000 polyval(p,0.8) polyval(p,1.2)

ans =

-1.002178560000000e+002 ans =

-1.172828160000000e+002

9)用几种方法作5432,,,x x x x 的图形,如一个图上画几条曲线。(注:若坐标不显示或者说图形显示不正常,可通过放大/缩小图形来显示)

x=-2:0.05:2;y=[x.^2;x.^3;x.^4;x.^5];z=0*x;

plot(x,y,x,z);grid on;legend('x^2','x^3','x^4','x^5')

10)用作图法求x x ln 82=和02sin 4=--x x 的根的近似值。

x=1:0.01:4;y=x.^2-8.*log(x);z=0*x;plot(x,y,x,z,'k');axis([1 4 0 4])

故第一个方程根的近似值分别为1.2和3。

x=0:0.01:4;y=4*sin(x)-x-2;plot(x,y);axis([0 4 -2 2])

x=0:0.01:4;y=4*sin(x)-x-2;plot(x,y);axis([0 4 0 2])

两个图结合可以看到,方程的两个根的近似值分别为:0.75和1.8。

13)建立M-文件作以下计算:

1.自然数的阶乘;

为此,我们建立函数M-文件如下:

function f=factor(n)

p=1;

for i=1:n

p=p*i;

end

f=p;

将上述内容以文件名factor.m存盘后,可使用以下命令计算:

t=factor(5)

t =

120

3.已知任意两个多项式(不一定同阶)的系数,求两个多项式的和。

为此,我们建立函数M-文件如下:

a=length(p1);b=length(p2);

if a

p1=[zeros(1,b-a),p1];

elseif a>b

p2=[zeros(1,a-b),p2];

end

将上述内容以文件名f13-3.m存盘后,可使用以下命令计算:

p1=[1 0 3 5]

p2=[2 1 0]

f13_3

p=p1+p2

p1 =

1 0 3 5

p2 =

2 1 0

p2 =

0 2 1 0

p =

1 2 4 5

用MATLAB作插值计算:设n个节点以数组x0,y0输入,m个插值点以数组x输入,输出数组y为m个插值。比如一个名为lagr1.m的M文件内容为:

function y=lagr1(x0,y0,x)

n=length(x0);m=length(x);

for i=1:m

z=x(i);

s=0.0;

for k=1:n

p=1.0;

for j=1:n

if j~=k

p=p*(z-x0(j))/(x0(k)-x0(j));

end

end

s=s+p*y0(k);

end

y(i)=s;

end

作Lagrange插值时只需在输入x0,y0,x后运行:y=lagr1(x0,y0,x)即可;

分段线性插值有现成的程序:y=interp1(x0,y0,x)

三次样条插值也有现成的程序:y=interp1(x0,y0,x,'spline');此种方法属于自然边界条件。其他边界条件下的三次样条插值程序见MATLAB的样条工具包(Spline Toolbook)。

例:对2

11

x

y +=

,55≤≤-x ,用)11(=n 个节点(等分)作上述三种插值,用m(=21)个插值点(等分)作图,比较结果。其语句如下: n=11;m=21;

x=-5:10/(m-1):5; y=1./(1+x.^2); z=0*x;

x0=-5:10/(n-1):5; y0=1./(1+x0.^2); y1=lagr1(x0,y0,x); y2=interp1(x0,y0,x);

y3=interp1(x0,y0,x,'spline'); [x' y' y1' y2' y3']

plot(x,z,'r',x,y,'k:',x,y1,'y',x,y2,'b',x,y3,'o') ans =

-5.0000 0.0385 0.0385 0.0385 0.0385 -4.5000 0.0471 1.5787 0.0486 0.0484 -4.0000 0.0588 0.0588 0.0588 0.0588 -3.5000 0.0755 -0.2262 0.0794 0.0745 -3.0000 0.1000 0.1000 0.1000 0.1000 -2.5000 0.1379 0.2538 0.1500 0.1401 -2.0000 0.2000 0.2000 0.2000 0.2000 -1.5000 0.3077 0.2353 0.3500 0.2973 -1.0000 0.5000 0.5000 0.5000 0.5000 -0.5000 0.8000 0.8434 0.7500 0.8205 0 1.0000 1.0000 1.0000 1.0000 0.5000 0.8000 0.8434 0.7500 0.8205 1.0000 0.5000 0.5000 0.5000 0.5000 1.5000 0.3077 0.2353 0.3500 0.2973 2.0000 0.2000 0.2000 0.2000 0.2000 2.5000 0.1379 0.2538 0.1500 0.1401 3.0000 0.1000 0.1000 0.1000 0.1000 3.5000 0.0755 -0.2262 0.0794 0.0745 4.0000 0.0588 0.0588 0.0588 0.0588 4.5000 0.0471 1.5787 0.0486 0.0484 5.0000 0.0385 0.0385 0.0385 0.0385

插值与拟合实验内容:

1. 选择一些函数,在n 个节点上,用拉格朗日、分段线性、三次样条三种插值方法,计算m

个插值点的函数值,通过数值和图形输出。 a.y=sinx,π20≤≤x n=10;m=100;

x=linspace(0,2*pi,100); y=sin(x); z=x*0;

x0=linspace(0,2*pi,6); y0=sin(x0);

y1=lagr1(x0,y0,x); y2=interp1(x0,y0,x);

y3=interp1(x0,y0,x,'spline');

plot(x,z,x,y,'k',x,y1,x,y2,x,y3,'y')

b.11,12≤≤--=x x y

n=10;m=100;b=0:0.1:1;a=b*0; x=linspace(-1,1,100); y=sqrt(1-x.*x); z=x*0;

x0=linspace(-1,1,6); y0=sqrt(1-x0.*x0); y1=lagr1(x0,y0,x); y2=interp1(x0,y0,x);

y3=interp1(x0,y0,x,'spline');

plot(x,z,x,y,'k',x,y1,x,y2,x,y3,'b',a,b,'k');

2. 用x y =在x=0,1,4,9,16产生5个节点51,,p p ,用不同的节点构造插值公式来计算x=5处的插值,与精确值比较并进行分析。

x0=[0 1 4 9 16];y0=sqrt(x0);x=5;y=sqrt(5) y1=lagr1(x0,y0,x)

x0(1)=[];y0=sqrt(x0);y2=lagr1(x0,y0,x) x0(4)=[];y0=sqrt(x0);y3=lagr1(x0,y0,x) x0(1)=[];y0=sqrt(x0);y4=lagr1(x0,y0,x) y = 2.2361 y1 = 2.0794 y2 = 2.2540 y3 = 2.2667 y4 = 2.2000

3.用给定的多项式,如35623-+-=x x x y ,产生一组数据n i y x i i ,,2,1),,( =,再在i y 上添加随机干扰,然后用i x 和添加了随机干扰的i y 作3次多项式拟合,与原系数比较,如果作2次或4次多项式拟合,结果如何?

x=2:0.1:6;p=[1 -6 5 -3];y=polyval(p,x); x0=2:0.5:6;y0=polyval(p,x0); r=rand(1,length(x0));y0=y0+r;

y3=polyfit(x0,y0,3);yy3=polyval(y3,x); y2=polyfit(x0,y0,2);yy2=polyval(y2,x); y4=polyfit(x0,y0,4);yy4=polyval(y4,x);

subplot(1,3,1),plot(x,y,'r',x,yy3,'b');title('three fit'); subplot(1,3,2),plot(x,y,'r',x,yy2,'b');title('two fit'); subplot(1,3,3),plot(x,y,'r',x,yy4,'b');title('4 fit');

数值积分:

例用MATLAB计算?

0sin

π

xdx

h=pi/20;

x=0:h:pi/2;

y=sin(x);

z1=sum(y(1:10))*h;

z2=sum(y(2:11))*h;

z=cumsum(y);

z11=z(10)*h;

z12=(z(11)-z(1))*h;

z3=trapz(y)*h;

format long

z4=quad('sin',0,pi/2,[0.0001,0.00001],1),%给出数值计算中间

z5=quad8('sin',0,pi/2,[0.0001,0.00001],1),%给出积分点的图形

z1,z11,z2,z12,z3

9 0.0000000000 4.26596866e-001 0.0896208493 11 0.4265968664 7.17602594e-001 0.4966040522 13 1.1441994604 4.26596866e-001 0.4137750613 z4 =

0.99999996278352

z5 =

1.00000000000000

z1 =

0.91940317001461 z11 =

0.91940317001461 z2 =

1.07648280269410 z12 =

1.07648280269410 z3 =

0.99794298635436

方程求根

牛顿法程序newton1.m 的内容如下: function y=newton1(x0,n,tol) x(1)=x0; b=1; i=1;

while(abs(b)>tol*abs(x(i))) x(i+1)=x(i)-fun1(x(i))/dfun1(x(i)); b=x(i+1)-x(i); i=i+1;

if(i>n)error('n is full'); end end y=x(i);

例:1)用牛顿法求02/sin 2=-x x 的两个根,准确到510-。 解:首先由作图知,该方程的两个根的大致范围为0或1.4: fplot('fun1',[-1,2,0,0.6]);

其中fun1.m 文件的内容为: function y=fun1(x) y=sin(x)-x*x/2;

其中dfun1.m 文件的内容为: function y=dfun1(x) y=cos(x)-x;

我们用以下MATLAB 命令计算方程在x=0附近根的近似值: y=newton1(0.1,10,0.000001) y = 0

我们用以下MATLAB 命令计算方程在x=0附近根的近似值: y=newton1(1.4,10,0.000001) y =

1.4044

2)当)(x f 为多项式时,可用r=roots(c)(其中c 为多项式的系数向量,且按降幂排列;r 为0)(=x f 的全部根。如求054)(23=+-=x x x f 的全部根,可使用以下MATLAB 命令: c=[1 -4 0 5]; r=roots(c) r = 3.6180 1.3820 -1.0000

若已知0)(=x f 的全部根r,也可以利用c=poly(r);求出原多项式)(x f ,如: c=poly(r) c =

1.0000 -4.0000 0.0000 5.0000 若已知多项式)(x f ,还可以利用函数df=polyder(c)求导函数: df=polyder(c)

df =

3.0000 -8.0000 0.0000 MATLAB 的符号运算:

1.符号运算与符号表达式

可以用sym来定义一个符号或符号表达式,如:

sym('x')

ans =

x

r=sym('(1+sqrt(x))/2')

r =

(1+sqrt(x))/2

而且用sym可定义多个符号(符号之间用空格隔开,不能用逗号),如:

syms a b c k t y

f=a*(2*x-t)^3+b*sin(4*y)

f =

a*(2*x-t)^3+b*sin(4*y)

上面定义的各个符号和表达式可以进行运算,如:

g=f+a*(2*r-1)^3

g =

a*(2*x-t)^3+b*sin(4*y)+a*x^(3/2)

可以用findsym来确认符号表达式中的符号,如:

findsym(g)

ans =

a, b, t, x, y

2.微积分运算:

设a,b,t,x,y是定义的符号变量

1)导数:diff(f)是求函数f对符号变量x(或字母表上最接近字母x的符号变量求导);而diff(f,t)是求函数f 对t 的导数。如:

f=sin(a*x);g=diff(f)

g =

cos(a*x)*a

f=sin(y*t);g=diff(f)

g =

cos(y*t)*t

f=sin(y*t);g=diff(f,t) %这可以看作二元函数求偏导数

g =

cos(y*t)*y

对于上面的f还可以用dif(f,2)求二阶导数:

f=sin(a*x);diff(f,2)

ans =

MATLAB实验报告

MATLAB程序设计语言 实 验 报 告 专业及班级:电子信息工程 姓名:王伟 学号:1107050322 日期 2013年6月20日

实验一 MATLAB 的基本使用 【一】 实验目的 1.了解MATALB 程序设计语言的基本特点,熟悉MATLAB 软件的运行环境; 2.掌握变量、函数等有关概念,掌握M 文件的创建、保存、打开的方法,初步具备将一般数学问题转化为对应计算机模型处理的能力; 3.掌握二维图形绘制的方法,并能用这些方法实现计算结果的可视化。 【二】 MATLAB 的基础知识 通过本课程的学习,应基本掌握以下的基础知识: 一. MATLAB 简介 二. MATLAB 的启动和退出 三. MATLAB 使用界面简介 四. 帮助信息的获取 五. MATLAB 的数值计算功能 六. 程序流程控制 七. M 文件 八. 函数文件 九. MATLAB 的可视化 【三】上机练习 1. 仔细预习第二部分内容,关于MATLAB 的基础知识。 2. 熟悉MATLAB 环境,将第二部分所有的例子在计算机上练习一遍 3. 已知矩阵???? ??????=??????????=123456789,987654321B A 。求A*B ,A .* B ,比较二者结果是否相同。并利用MATLAB 的内部函数求矩阵A 的大小、元素和、长度以 及最大值。 程序代码: >> A=[1 2 3;4 5 6;7 8 9]; >> B=[9 8 7;6 5 4;3 2 1]; >> A*B ans =

30 24 18 84 69 54 138 114 90 >> A.*B ans = 9 16 21 24 25 24 21 16 9 两者结果不同 >> [m,n]=size(A) m = 3 n = 3 >> b=sum(A) b = 12 15 18 >> a=length(A) a = 3 >>max(A) ans =

学习Matlab 心得体会

Matlab 心得体会 本学期通过对MATLAB的系统环境,数据的各种运算,矩阵的分析和处理,程序设计,绘图,数值计算及符号运算的学习,初步掌握了MATLAB的实用方法。通过理论课的讲解与实验课的操作,使我在短时间内学会使用MATLAB,同时,通过上机实验,对理论知识的复习巩固实践,可以自己根据例题编写设计简单的程序来实现不同的功能,绘制出比较满意的二维三维图形,在实践中找到乐趣。 MATLAB是一个实用性很强,操作相对容易,比较完善的工具软件,使用起来比较方便,通过操作可以很快看到结果,能够清晰的感觉到成功与失败,虽然课程中也会出现一些小问题,但是很喜欢这门课程。在为学习这门课前就听说了他的强大,因为现在的很多模型都是需要这些分析软件的。曾经旁听过学校数学建模的课程,当时老师用的是lingo。对那个只需要U盘携带就可以安装的小东西记忆深刻。等到学习matlab时觉得这才是真正的王道啊。 它不仅有强大的运算功能,还有强大的绘图功能,虽然学习了有一个学习,但是我对他的了解额仅仅是一点点,或许连入门都谈不上。因为我学习时了解到一个现实。就是matlab 的学习依赖有比较好的数学功底,其中我看最经常运用到的就是矩阵。我从网上了解到matlab是一门高等数学和计算机技术结合的东西,学习它必须具有相应的数学和计算机知识。然而很可惜,我的书写不是很好。每次讲到这个部分的时候就觉得听说理解无能了。特别是我今年还是大三。虽然这学期的学习的时间短暂,就算时间足够,老师也不能把所有的都讲解给我们,因为一个软件的功能需要我们自己不断的去摸索,老师也不可能知道所有。老师只是个指路人,最终的学习还是要靠自己。而且在摸索的过程中,我们能够发现和体会学习的快乐。痛并快乐着是种常态了吧。 自我感觉学习matlab与其说是学习一门软件,更不如说是学习一门语言。用一种数理的语言描述现象,揭示表象下的规律。此外,我认为matlab中的作图功能很强大,不仅简单的函数现象可以明确画出,而且一些点状物,甚至立体图也可以画出。大一上微积分的时候,老师曾经多次在课件中加入用matlab画出的图来。不论是一维二维三维等等,都能很好的画出来。只要能编写出函数式,在短短的几秒之内,他就会呈现在你眼前。另外就是图形的直观性,这是由阴影的制作的。而且可以根据需要,坐标图上加标题,坐标轴标记,文本注释级栅格等,也可以指定图线形式,比如是虚线。颜色也可以自己来定。可以在同一张图上画,也可以单个显示。 在学习的过程中,因为以前学过access中的select语言,觉得就编写这方面是有共性的,但是matlab的编程语言似乎更多更复杂一点,这是由于涉及的数学模型,数学公式更多的原因。可是今年的这门课真的是让我感到没学到什么,估计也是因为我抱着看一看的随意态度来的吧,也没有那种遇到不懂的就一定要弄懂它的决心和毅力。说什么都是借口了,无法掩饰我没有学好它的事实。事实上,我觉得今年这门课的重点并不是让我们掌握这种软件的具体用法,而是主要向我们展示如何用它去解决一些金融问题,数学问题。这点让我很郁闷,因为我不懂得原理,听起来这门课倍感吃力啊。可是嘛,年轻没有什么不可以,又有谁可以断言我接下来的生活中不能好好学习这个东西为自己的工作,学习,生活,研究兴趣带来方便呢。 从大学开学的见闻到现在学习MATLAB,感觉这是一个很好的软件,语言简便,实用性强。作为一个做新手,想要学习好这门语言,可以说还是比较难的。在我接触这门语言的这些天,除了会画几个简单的图形,其他的还是有待提高。从另一个方面也对我们大学生提出了两个要求——充实的课外基础和良好的英语基础。在现代,几乎所有好的软件都是来自国外,假如不会外语,想学好是非常难的。

MATLAB实验报告实验二

实验二 MATLAB矩阵及其运算 学号:3121003104 姓名:刘艳琳专业:电子信息工程1班日期:2014.9.20 一实验目的 1、掌握Matlab数据对象的特点以及数据的运算规则。 2、掌握Matlab中建立矩阵的方法以及矩阵处理的方法。 3、掌握Matlab分析的方法。 二实验环境 PC_Windows 7旗舰版、MATLAB 7.10 三实验内容 4、1. (1)新建一个.m文件,验证书本第15页例2-1; (2)用命令方式查看和保存代码中的所有变量;

(3)用命令方式删除所有变量; (4)用命令方式载入变量z。 2. 将x=[4/3 1.2345e-6]在以下格式符下输出:短格式、短格式e方式、长格式、长格式e方式、银行格式、十六进制格式、+格式。 短格式 短格式e 长格式

长格式e方式 银行格式 十六进制格式 3.计算下列表达式的值 (1)w=sqrt(2)*(1+0.34245*10^(-6)) (2)x=(2*pi*a+(b+c)/(pi+a*b*c)-exp(2))/(tan(b+c)+a) a=3.5;b=5;c=-9.8; (3)y=2*pi*a^2*((1-pi/4)*b-(0.8333-pi/4)*a) a=3.32;b=-7.9; (4)z=0.5*exp(2*t)*log(t+sqrt(1+t*t)) t=[2,1-3i;5,-0.65];

4. 已知A=[1 2 3 4 5 ;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20],对其进行如下操作:(1)输出A在[ 7, 10]范围内的全部元素; (2)取出A的第2,4行和第1,3,5列; (3)对矩阵A变换成向量B,B=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]; (4)删除A的第2,3,4行元素; (1) (2)

MATLAB全实验报告

《数学实验》报告 实验名称 Matlab 基础知识 学院 专业班级 姓名 学号 2014年 6月

一、【实验目的】 1.认识熟悉Matlab这一软件,并在此基础上学会基本操作。 2.掌握Matlab基本操作和常用命令。 3.了解Matlab常用函数,运算符和表达式。 4.掌握Matlab工作方式和M文件的相关知识。 5.学会Matlab中矩阵和数组的运算。 二、【实验任务】 P16 第4题 编写函数文件,计算 1! n k k = ∑,并求出当k=20时表达式的值。P27第2题 矩阵A= 123 456 789 ?? ?? ?? ?? ?? ,B= 468 556 322 ?? ?? ?? ?? ?? ,计算A*B,A.*B,并比较两者的区别。 P27第3题 已知矩阵A= 52 91 ?? ?? ?? ,B= 12 92 ?? ?? ?? ,做简单的关系运算A>B,A==B,AB)。 P34 第1题 用 111 1 4357 π =-+-+……公式求π的近似值,直到某一项的绝对值小于-6 10为止。 三、【实验程序】 P16 第4题 function sum=jiecheng(n) sum=0; y=1; for k=1:n for i=1:k y=y*i; end sum=sum+y; end sum P27第2题 >>A=[1 2 3;4 5 6;7 8 9] >>B=[4 6 8;5 5 6;3 2 2] >>A*B

P27第3题 >> A=[5 2;9 1];B=[1 2;9 2]; >>A>B >>A==B >>A> (A==B)&(A> (A==B)&(A>B) P34 第1题 t=1; pi=0; n=1; s=1; while abs(t)>=1e-6 pi=pi+t; n=n+2; s=-s; t=s/n; end pi=4*pi; 四、【实验结果】 P16 第4题 P27第2题

(完整版)matlab课程学习总结

目录 VC++ & Matlab 混合编程的快速实现 (2) 摘要 (2) 关键词 (2) 简介: (2) 实例分析 (3) 1、编写Matlab函数 (3) 2、Matlab6.5编译器设置 (3) 3、建立C++控制台工程 (5) 4、启用Matlab Add-in 工具条 (6) 5、VC++6.0环境及工程设置 (7) 6、Matlab到C++的代码转换 (10) 7、C++函数的使用 (11) 特别说明一: (12) 特别说明二: (13) 8、程序的发布 (13) 总结 (13)

VC++ & Matlab 混合编程的快速实现摘要: 许多工程软件需要用到复杂的数学算法。VC++能够形成各种用户界面,并可以直接与系统及底层硬件交换数据。因此研究VC++和Matlab的混合编程具有很大的实际意义。 该文讨论了如何使用Matlab 的Complier 将*.m函数编译为动态链接库DLL,提供VC++ 调用的方法,提供了一种VC++与Matlab 混合编程的快速实现。 关键词:Matlab VC++ MCC Complier 动态链接库DLL 简介: Matlab 作为当今世界上应用最为广泛的数学软件,具有非常强大的数值计算、数据分析处理、系统分析、图形显示甚至符号运算的功能。已经在如生物工程,图像处理,语音处理,雷达探空,声纳探水,地震探地,以及控制论,系统论等各个领域得到广泛的应用。它是一个完整的数学平台,在这个平台上,用户只需寥寥数语就可以完成十分复杂的功能,大大提高了工程分析计算、图像处理的效率。但是Matlab 强大的功能只能在它所提供的平台上才能使用,即用户必须在安装Matlab 系统的机器上才能执行*.m文件。这样当用户需要将在Matlab下已开发完毕的复杂算法应用到高级语言开发环境下时就带了问题,是将现成的东西集成高级语言开发的程序中呢?还是用高级语

MATLAB实训小结

实训小结 为期一周的MATLAB实训在学习与忙碌中度过了,时间虽短,但我们却真真切切的学到了知识,在现实工作中可以运用的知识。 在第一节课,我们便了解到MATLAB是世界上最流行的、应用最广泛的工程计算和仿真软件,它将计算、可视化和编程等功能同时集于一个易于开发的环境。MATLAB主要应用于数学计算、系统建模与仿真、数学分析与可视化、科学与工程绘图和用户界面设计等。对MATLAB的系统结构和特点等,老师也向我们做出了大致的讲解,同时,我们知道了MATLAB程序的一些最基本的应用和运算,并能够进行一些简单的编程。就这样,实训的第一天大家都在期待和兴奋中度过。 接下来的时间,主要是以大家自学和练习为主,老师进行辅导和考察。在学习过程中,不懂的可以相互之间小声的讨论,也可向老师请教,但必须确保自己真正学到了知识,认真的看书并进行编程练习。一天的学习接近尾声时,就是老师考察大家一天的收获的时候了,老师总会出一些小题目让大家编出它的程序,虽然有的题目对我们来说还是有些难度的,但是在老师的指点下我们还是编出程序的,当我们看到自己编的程序运行正确时,总是会万分的兴奋,充满成就感。 就这样,仅仅一个星期的实训就结束了,虽然不能十分熟悉和运用MATLAB的所有程序,但是我们却打下了一定的基础,

在以后,当我们真正开始深入学习这门学问时,我们对它将不会再那么陌生,学起来也将轻松许多。这次实训为我们提供了一个很好的学习机会,唯一不足的就是时间有点短,我们不能在这段时间里学到更多的知识,因此,在这一周打下的基础上,我们需要用自己的努力去自学,以获取更多的知识。 知识是无穷无尽的,知识的获取需要一颗上进的心,老师将我们领进了门,下面的路就应该我们自己去走,即是充满荆棘,也要努力奋斗往前冲。

matlab学习心得体会(精选3篇)

matlab学习心得体会(精选3篇) matlab学习心得体会一:matlab学习心得matlab中有丰富的图形处理能力,提供了绘制各种图形、图像数据的函数。他提供了一组绘制二维和三维曲线的函数,他们还可以对图形进行旋转、缩放等操作。matlab内部还包含丰富的数学函数和数据类型,使用方便且功能非常强大。 本学期通过对matlab的系统环境,数据的各种运算,矩阵的分析和处理,程序设计,绘图,数值计算及符号运算的学习,初步掌握了matlab的实用方法。通过理论课的讲解与实验课的操作,使我在短时间内学会使用matlab,同时,通过上机实验,对理论知识的复习巩固实践,可以自己根据例题编写设计简单的程序来实现不同的功能,绘制出比较满意的二维三维图形,在实践中找到乐趣。 matlab是一个实用性很强,操作相对容易,比较完善的工具软件,使用起来比较方便,通过操作可以很快看到结果,能够清晰的感觉到成功与失败,虽然课程中也会出现一些小问题,但是很喜欢这门课程。 matlab学习心得体会二:matlab学习心得(463字) 学习matlab是听说它是一个功能强大的数学软件,但是正被微积分的计算缠身,听说有一个高级的计算器当然高兴,以后可以偷懒了,当然现在不能偷懒。听说关于自动化的计算特别复杂,如果有一种软件能帮忙解题,那是一种极大的解脱,有益于缩短研究时间。目前我只知道有三种数学软件,都是国外的,没有国内的,差距挺大的。matlab学起来挺顺手的,比c语言简单。但是深入学习的时候却困难重重,因为很多知识都没有学习,就算知道那些函数,也没有什么用处。老师布置的作业难度大,写一篇实验,大一什么都不会,写一篇这种论文谈何容易。最多也就会一些数值计算、符号计算、简单绘图,根本不会什么实验。 学习matlab体会最多的是这个软件的功能强大,好多数学题都被轻易的解出。但是有一点遗憾,不知是我不会用,还是它没个功能,已知空间的电荷分布,求空间的电场分布。其中电场分布是无法用函数表达式表示。我知道计算机肯定可以实现,但是这个软件能不能实现就不知道了,我看过许多资料,但是在这方面没有提到相关信息。 总之,这个软件功能强大,不知什么时候国内才有类似的软件。 matlab学习心得体会三:学习matlab的心得(817字) 这是我在学习的过程中的一些技巧,或许对你有帮助,可能字数不你能满足你的要求,但是绝对是精华。

MATLAB实验报告材料(1-4)

信号与系统MATLAB第一次实验报告 一、实验目的 1.熟悉MATLAB软件并会简单的使用运算和简单二维图的绘制。 2.学会运用MATLAB表示常用连续时间信号的方法 3.观察并熟悉一些信号的波形和特性。 4.学会运用MATLAB进行连续信号时移、反折和尺度变换。 5.学会运用MATLAB进行连续时间微分、积分运算。 6.学会运用MATLAB进行连续信号相加、相乘运算。 7.学会运用MATLAB进行连续信号的奇偶分解。 二、实验任务 将实验书中的例题和解析看懂,并在MATLAB软件中练习例题,最终将作业完成。 三、实验内容 1.MATLAB软件基本运算入门。 1). MATLAB软件的数值计算: 算数运算 向量运算:1.向量元素要用”[]”括起来,元素之间可用空格、逗号分隔生成行向量,用分号分隔生成列向量。2.x=x0:step:xn.其中x0位初始值,step表示步长或者增量,xn 为结束值。 矩阵运算:1.矩阵”[ ]”括起来;矩阵每一行的各个元素必须用”,”或者空格分开;矩阵的不同行之间必须用分号”;”或者ENTER分开。2.矩阵的加法或者减法运算是将矩阵的对应元素分别进行加法或者减法的运算。3.常用的点运算包括”.*”、”./”、”.\”、”.^”等等。 举例:计算一个函数并绘制出在对应区间上对应的值。

2).MATLAB软件的符号运算:定义符号变量的语句格式为”syms 变量名” 2.MATLAB软件简单二维图形绘制 1).函数y=f(x)关于变量x的曲线绘制用语:>>plot(x,y) 2).输出多个图像表顺序:例如m和n表示在一个窗口中显示m行n列个图像,p表 示第p个区域,表达为subplot(mnp)或者subplot(m,n,p) 3).表示输出表格横轴纵轴表达范围:axis([xmax,xmin,ymax,ymin]) 4).标上横轴纵轴的字母:xlabel(‘x’),ylabel(‘y’) 5).命名图像就在subplot写在同一行或者在下一个subplot前:title(‘……’) 6).输出:grid on 举例1: 举例2: 3.matlab程序流程控制

MATLAB心得体会

M A T L A B心得体会 标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

MATLAB心得体会 这学期开了MATLAB这门课程,这里面有太多的学问。只要书里面有最基本的语法和命令,对于一个有编程基础的人,MATLAB可以在一个下午的时间内学会。当然,仅仅是学会。如果想要对MATLAB比较得心应手,那么最好的办法就是练习。练习的素材很多,比如对于学经济学的,可以做一些simulation之类的,也可以试着把计量或者宏观教材里面的一些算法写写出来。一开始可能很慢,但是当你完成了一个比较大的project的时候,你的MATLAB的功力将会有巨大的提升。 用MATLAB的无非是做数值计算或者最优化,这也是MATLAB的强项,MATLAB有足够多的工具解决这些问题。但是在使用这些工具箱之前,应该首先了解一些数值计算以及最优化的理论。这一点在程序碰到问题或者计算结果不理想的时候尤为重要。很多时候结果不理想并不是自己的理论出了问题,而是盲目或者错误使用MATLAB的工具箱而导致的。比如我曾经做过一个单纯形法的优化程序,但是结果总是不理想,这个时候就要返回到单纯形法具体是一种什么样的来考虑这个问题,最后发现是由于目标的某一部分十分平缓导致的。 当然更重要的是如果你不理解理论,很多问题根本不知道如何处理。有个学化学同学就曾问我一个程序怎么写,说MATLAB肯定可以完成的。了解清楚之后才明白原来他想做的就是一个受限最小二乘。但是他不懂得什么是最小二乘,当然面对这个问题无从下手。 这个问题没有人强调,但我觉着蛮重要。这里的关键点其实很简单,就是尽量减少重复计算,哪怕是多项式复杂度以内的计算。重复计算的内容应该适时保存到内存中,以后直接调用。一个程序可能会重复运行几千次几万次,一点点的浪费时间都可能被放大很多。空间(内存)我们是可以扩充的,但是时间不是,所以绝大多数时候我们需要放弃空间,获得时间上的迅捷。 这里有个故事,曾经在某技术论坛上看到的,说腾讯公司早期做的QQ实在太过垃圾,他们追踪过QQ的行为,发现在几分钟时间里重复调用了某同一注册表项几百次。显然注册表的内容所占内存是有限的,甚至是可以忽略的,但是每次读注册表项可能都要读硬盘,这里的时间花费是很大的,为什么不把这项内容直接存储在内存里呢?

matlab实验心得体会.doc

matlab实验心得体会 篇一:matlab实验心得总结 通过《matlab仿真》实验使我学习掌握了许多知识。首先是对matlab 有了一个全新的认识,其次是对matlab的更多操作和命令的使用有了更高的掌握,最重要的事对matlab的处理能力有了一个更高的飞跃尤其是对相关函数的使用及相关问题的处理。 就对matlab相关的命令操作而言,通过这次实验的亲身操作和实践,学习掌握了许多原本不知道的或者不太熟悉的命令。比如说相关m文件的建立,画图用到的标注,配色,坐标控制,同一张图里画几幅不同的图像,相关参数的设置以及相关函数的调用格式等等。就拿建立一个数学方程而言,通过设置不同的参数达到所需要的要求和结果,而且还可以在不同的窗口建立不同的函数而达到相同的效果,比如说可以再命令窗口和m文件中通过不同的命令设置的到相同的所需的效果图。而自己对于矩阵及闭环传递函数的建立原本所掌握的知识几乎为零,而通过这次实验使我彻底的掌握了相关的命令操作和处理的方法,在这里我们不仅可以通过建立函数和参数来达到目标效果,而且还可以通过可视化的编程达到更快更方便,更简洁的效果。就拿可视化编程而言原本根本就只是听说而已罢了,从来就没有亲身去尝试过,然而现在自己却可以和容易的通过搭建不同功能木块来实现相关的函数及功能。这些在原本根本就不敢相信,然而通过《matlab仿真》的学习和实验亲身操作这些原本看似不可能的操作在此就变的轻而易举的事了。

再此我不得不题到的事指导老师教我们怎么去搭建构造相关闭环传递函数的实验,这个实验几乎在我们的这次实验中占据了非常大的比重,在后面的几个大一点的实验中几乎都是涉及这个方面的内容,我现在想说的事怎么去搭建相关的函数和功能模块对我们来说几乎已经不是什么难事了,就拿怎么去对模块功能的实现以及分析确实是个重点和难点。通过对同一个模块分析其对应的不同的参数分析图的建立去分析和解释其对应的相关功能和技术指标和性能分析是非常重要的,我们不可能只需要建立相关的模块和功能就说自己掌握了所有的相关知识和技术,真正的技术和知识是怎么去分析和解释相关的技术指标和功能参数才是重中之重。就此而言,我坦诚的说自己所掌握的还是十分的有限的,但是老师给我们介绍的相关方法和技巧还是十分有效果的,如果自己真的想在这方面有什么建树对自己以后的要求还是需要更改的要求的,万不可以就此止步不前,自命不凡,我们还需掌握和了解还有许多许多,我们真正所掌握的只是皮毛,要想取得更大的成绩就得不断的去努力学习和汲取相关的知识和技巧。万不可自以为傲,裹足不前,matlab真的是个非常强大和有用的工具我们真正的能把它学懂学透的话还是需要下非常大的功夫和努力的。然而,不是说兴趣才是最大的老师嘛,我也相信,只要你自己有兴趣,即使它再怎么强大和难搞,我们能做的还是非常多的,关键的就只是在于你自己的态度了。我这里想说的事,matlab对于我来说是非常有吸引力的,我不敢说自己多么喜欢它,但是兴趣确实蛮高的,所以我相信在以后的学习和工作当中matlab将成为我非常有用的帮忙工具和好伙伴,也许这要说有点太草率了,但是我觉得对它的评价怎么也不会让每一个接触

matlab课程总结

Matlab 课程总结 学习matlab已经有一年多的时间了,matlab跟其他语言不一样(我用的编程语言,除了matlab就应该是c或c++了,VB也接触过),如果你抱着“把其他语言的思想运用在matlab里面的想法”的话,那么我想,即使程序运行不出错,也很难把握matlab的精髓,也就很难发挥matlab的作用了。 Matlab是一个基于矩阵运算的软件,这恐怕是众所周知的事情了,但是,真正在运用的时候(就是在编程的时候),许多人(特别是初学者)往往没有注

意到这个问题,因此,for循环(包括while循环)满天飞…………..这不仅没有发挥matlab所长,还浪费宝贵时间。我们往往在初始化矩阵的时候注意到这个问题,懂得了使用矩阵而不是循环来赋值,但是,在其他环节上,就很容易疏忽,或者说,仍然没有摆脱C++的思想。因此,以先用循环(基于C++的思想)来编写代码,然后看看能否用matlab的语言(基于矩阵的思想)来改进。当然,这样做的前提是你对matlab提供的一些函数比较熟悉才行,这些函数在matlab的“帮助”那里搜索“FunctionsUsedinVector izing”就可以找到一些。 对MATLAB的认识和了解 语言简洁紧凑,使用方便灵活,库函数极其丰富。与之前学过的C语言相比较。它的语言简练明了,有时候只要一个字符就能表示出整句语句,不用一步步去读。这种语言简单而实用。每个函数建立一个同名的M文件,如上述函数的文件名为fun.m。这种文件简单、短小、高效,并且便于调试。比如说,函数的赋值。在C语言中,它需要一个个去赋值,x=?;y=?;当变量很多的时候,我们不能一次性的去赋值。并且我们需要注意赋值的类型。而在Matlab软件中,我们只需要知道它的初值,自变量的数值,以及它的范围,就可以用矩阵把整个函数赋值。这减去了我们的工作复杂性,也降低了我们时间花费。 运算符丰富,用Matlab软件设计程序,它更加方便快捷。MATLAB 的基本数据单元是既不需要指定维数、也不需要说明数据类型的矩阵,而且数学表达式和运算规则与通常的习惯相同。因此,在MATLAB环境下,数组的操作与数的操作一样简单。对比C语言,Matlab确实简单不少。我们在编写程序时简便了许多。例如,求1 1 2 3 5 8 13…这个算法。C语言得用许多的语句去循环算这个算法。而Matlab软件可以首先数据初始化,然后用while去循环,做出循环体,就可以你要多少数据,它会给你多少数据。还有在Matlab软件设计程序时,少了很多的定义,减少了复杂度,节省了计算机的暂时内存使用率。就和C语言一样,在语句结束时用“{ }”,Matlab 软件中一句话结束时,也需要用end。MATLAB既具有结构化的控制语句(如for循环、while循环),又有面向对象编程的特性。 语法限制不严格,程序设计自由度大。程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。Matlab具有一个强大的工具箱,里面的东西,只要你想要的,你可以毫不犹豫的提取出来,不用想C语言编程中,你要的东西你得用函数调用的形式去借用。这些工具箱提供了用户在特别应用领域所需的许多函数,这使得用户不必花大量的时间编写程序就可以直接调用这些函数,达到事半功倍的效果。

MATLAB课程设计实验体会

课程设计实验体会 学生姓名:李祥胜 学生学号:20120704 专业班级:光信息科学与技术 指导老师:miss Chen 学院:信息工程学院 题目: MATLAB学期实验总结

MATLAB概念及介绍 MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB集成环境主要包括五个部分:MATLAB语言、MATLAB工作环境、句柄图形、MATLAB数学函数库和数学建模、小波分析、MATLAB API(App lication Program Interface)。MATLAB语言是以数组为基本数据单位,包括控制流程语句、函数、数据结构、输人输出及面向对象等特点的高级语言。利用SIMULINK对系统进行仿真与分析,在进入虚拟实验环境后,不需要书写代码,只需使用鼠标拖动库中的功能模块并将它们连接起来,再按照实验要求修改各元器件的参数。通过虚拟实验环境建立实验仿真电路模型,可使一些枯燥的电路变得有趣味,复杂的波形变得形象生动,使得各种复杂的能量转换过程比较直观地呈现。 1.1、MATLAB语言特点及优势 1.1.1、语言特点 MATLAB被称为第四代计算机语言,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB的最突出的特点就是简洁。MATLAB用更直观的、符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码。MATLAB 给用户带来的是最直观、最简洁的程序开发环境。以下简单介绍一下MATLAB的主要特点。 (1)语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用其丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。 (2)运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短,具体运算符见附表。 (3)MATLAB既具有结构化的控制语句(如for循环、while循环、break语句和if语句),又有面向对象编程的特性。 (4)语法限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。 (5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。

matlab实习总结

MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连 matlab开发工作界面 接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用 Matlab是一个强大的数学工具,它的应用广泛,涉及到各个领域.它使用起来十分方便,不用麻烦去定义变量.它的绘图能力很强,甚至可以模拟出三维视图.矩阵是它应用的核心,许多工程繁琐的运算都需要靠矩阵来化简,这正是它的生命力所在.但是,他的函数很多,开始学时记的比较痛苦,我已经深深感觉到了.不过看多了也就熟了,感觉和学五笔差不多.它的语法简单,像我学过C语言的学起来还是蛮容易的.它的数组定义十分符合自然,是从1开始的,数组元素的调用也很

接近数学的表达.此外,函数的名字也很符合英文规则,反正我用得很开心就是了. 通过学习matlab,我又一次锻炼了自己的思维.它学起来得心应手也让我明白了学习一门语言(c语言)对学习其他语言的帮助指导作用.同时,它也加强了我理论联系实际的能力.这是一个专业课的基础工具,学好它是必要的. 在第一章中,讲的是一些matlab的入门技术,除了一些基本操作与介绍之外,还初步认识了简单指令的编制,认识了一些matlab 的特殊符号,例如运算用到的加减乘除。(+—*/)对我来说还是比较容易上手的。 但在第二章开始,开始有点难度了,在第二章我接触到两种数据类型,一个是double,还有就是char,另外还介绍了赋值语句,数学计算,常用函数,输入输出语句和数据文件。其中让我最容易混淆的就是运算的优先等级,当所需要运算的公式较长时,常常因没有弄好运算优先级而把程序编错,这一章也接触了更多的特殊符号,在多次看书之后,还是顺利把老师所布置的作业完成了。 在第三章中,我接触到基本的matlab选择结构,还有控制这个结构的关系运算符和逻辑运算符。也就是if结构。这个结构对运算起到很大作用,跟elseif配合使用的话,就可以将很图方法。还有,我们学习如何控制画图的附加功能,例如线的宽度和符号的颜色。这些属性可由指定的“propertyname”和值Value决定,“propertyname”和值Value将出现在plot命令的数据后。

【参考文档】matlab实验心得体会_学习matlab的心得体会-优秀word范文 (3页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == matlab实验心得体会_学习matlab的心得体会 导语:通过对MATLAB的系统环境,数据的各种运算,矩阵的分析和处理,程序设计,绘图,数值计算及符号运算的学习,初步掌握了MATLAB的实用方法。以下是小编带来的matlab实验心得体会,希望对您有所帮助。 matlab实验心得体会(一) 学习matlab是听说它是一个功能强大的数学软件,但是正被微积分的计算缠身,听说有一个高级的计算器当然高兴,以后可以偷懒了,当然现在不能偷懒。听说关于自动化的计算特别复杂,如果有一种软件能帮忙解题,那是一种 极大的解脱,有益于缩短研究时间。目前我只知道有三种数学软件,都是国外的,没有国内的,差距挺大的。matlab学起来挺顺手的,比C语言简单。但是 深入学习的时候却困难重重,因为很多知识都没有学习,就算知道那些函数, 也没有什么用处。老师布置的作业难度大,写一篇实验,大一什么都不会,写 一篇这种论文谈何容易。最多也就会一些数值计算、符号计算、简单绘图,根 本不会什么实验。 学习matlab体会最多的是这个软件的功能强大,好多数学题都被轻易的解出。但是有一点遗憾,不知是我不会用,还是它没个功能,已知空间的电荷分布,求空间的电场分布。其中电场分布是无法用函数表达式表示。我知道计算 机肯定可以实现,但是这个软件能不能实现就不知道了,我看过许多资料,但 是在这方面没有提到相关信息。 总之,这个软件功能强大,不知什么时候国内才有类似的软件。 matlab实验心得体会(二) 我从中国石油大学(北京)来到大庆油田勘探开发研究院实习,刚刚来到这 里时我内心充满了激动和喜悦,对这个有着辉煌成绩的科研单位充满了期待。 到了这里没多久我就参加培训中心组织的入院教育,对研究院的辉煌过去有了 更深刻的了解,那时我就下定决心在研究院好好实习,多学习一些现场经验,为以后的工作打下良好的基础。 一个月的入院培训结束后,经过自己申请和中心安排我被分到了地震资料 处理一室,实习期间地震一室的副主任陈志德是我的现场导师,陈主任有着丰

matlab实验心得总结

通过《matlab仿真》实验使我学习掌握了许多知识。首先是对matlab有了一个全新的认识,其次是对matlab的更多操作和命令的使用有了更高的掌握,最重要的事对matlab的处理能力有了一个更高的飞跃尤其是对相关函数的使用及相关问题的处理。 就对matlab相关的命令操作而言,通过这次实验的亲身操作和实践,学习掌握了许多原本不知道的或者不太熟悉的命令。比如说相关m文件的建立,画图用到的标注,配色,坐标控制,同一张图里画几幅不同的图像,相关参数的设置以及相关函数的调用格式等等。就拿建立一个数学方程而言,通过设置不同的参数达到所需要的要求和结果,而且还可以在不同的窗口建立不同的函数而达到相同的效果,比如说可以再命令窗口和m文件中通过不同的命令设置的到相同的所需的效果图。而自己对于矩阵及闭环传递函数的建立原本所掌握的知识几乎为零,而通过这次实验使我彻底的掌握了相关的命令操作和处理的方法,在这里我们不仅可以通过建立函数和参数来达到目标效果,而且还可以通过可视化的编程达到更快更方便,更简洁的效果。就拿可视化编程而言原本根本就只是听说而已罢了,从来就没有亲身去尝试过,然而现在自己却可以和容易的通过搭建不同功能木块来实现相关的函数及功能。这些在原本根本就不敢相信,然而通过《matlab仿真》的学习和实验亲身操作这些原本看似不可能的操作在此就变的轻而易举的事了。 再此我不得不题到的事指导老师教我们怎么去搭建构造相关闭环传递函数的实验,这个实验几乎在我们的这次实验中占据了非常大的比重,在后面的几个大一点的实验中几乎都是涉及这个方面的内容,我现在想说的事怎么去搭建相关的函数和功能模块对我们来说几乎已经不是什么难事了,就拿怎么去对模块功能的实现以及分析确实是个重点和难点。通过对同一个模块分析其对应的不同的参数分析图的建立去分析和解释其对应的相关功能和技术指标和性能分析是非常重要的,我们不可能只需要建立相关的模块和功能就说自己掌握了所有的相关知识和技术,真正的技术和知识是怎么去分析和解释相关的技术指标和功能参数才是重中之重。就此而言,我坦诚的说自己所掌握的还是十分的有限的,但是老师给我们介绍的相关方法和技巧还是十分有效果的,如果自己真的想在这方面有什么建树对自己以后的要求还是需要更改的要求的,万不可以就此止步不前,自命不凡,我们还需掌握和了解还有许多许多,我们真正所掌握的只是皮毛,要想取得更大的成绩就得不断的去努力学习和汲取相关的知识和技巧。万不可自以为傲,裹足不前,matlab真的是个非常强大和有用的工具我们真正的能把它学懂学透的话还是需要下非常大的功夫和努力的。然而,不是说兴趣才是最大的老师嘛,我也相信,只要你自己有兴趣,即使它再怎么强大和难搞,我们能做的还是非常多的,关键的就只是在于你自己的态度了。我这里想说的事,matlab对于我来说是非常有吸引力的,我不敢说自己多么喜欢它,但是兴趣确实蛮高的,所以我相信在以后的学习和工作当中matlab将成为我非常有用的帮忙工具和好伙伴,也许这要说有点太草率了,但是我觉得对它的评价怎么也不会让每一个接触过它的人吝啬是自己赞美之词。它不仅仅可以用来建模分析函数,还可以用来进行图形的建模和仿真,还可以用来分析系统和函数的参数稳定性等等。再次就不一一列举了,我怕三天也不会说完的。

MATLAB的常用应用总结

§7 MATLAB的应用 7.1 MATLAB在数值分析中的应用 插值与拟合是来源于实际、又广泛应用于实际的两种重要方法。随着计算机的不断发展 及计算水平的不断提高,它们已在国民生产和科学研究等方面扮演着越来越重要的角色。下面对插值中分段线性插值、拟合中的最为重要的最小二乘法拟合加以介绍。 7.1.1分段线性插值 所谓分段线性插值就是通过插值点用折线段连接起来逼近原曲线,这也是计算机绘制图形的基本原理。实现分段线性插值不需编制函数程序,MATLAB自身提供了内部函数in terpl 其主要用法如下: in terp1(x,y,xi) —维插值 ?yi=i nterp1(x,y,xi) 对一组点(x,y)进行插值,计算插值点xi的函数值。x为节点向量值,y为对应的节点函 数值。如果y为矩阵,则插值对y的每一列进行,若y的维数超出x或xi的维数,则返回NaN。 ?yi=i nterp1(y,xi) 此格式默认x=1:n , n为向量y的元素个数值,或等于矩阵y的size(y,1)。 ?yi=interp1(x,y,xi, ' method') method用来指定插值的算法。默认为线性算法。其值常用的可以是如下的字符串。 ?n earest线性最近项插值。 ?lin ear线性插值。 ?spli ne三次样条插值。 ?cubic三次插值。 所有的插值方法要求x是单调的。x也可能并非连续等距的。 正弦曲线的插值示例: >> x=0 :0.1:10; >> y=si n( x); >> xi=0 :0.25:10; >> yi=i nterp1(x,y,xi); >> plot(x,y, ' 0' ,xi,yi) 则可以得到相应的插值曲线(读者可自己上机实验) 。 Matlab也能够完成二维插值的运算,相应的函数为in terp2,使用方法与in terpl基本相同,只是输入和输出的参数为矩阵,对应于二维平面上的数据点,详细的用法见Matlab联机帮助。 7.1.2最小二乘法拟合 在科学实验的统计方法研究中,往往要从一组实验数据(X j, y i)中寻找出自变量x和因 变量y之间的函数关系y=f(x)。由于观测数据往往不够准确,因此并不要求y=f(x)经过所有的点(X i,yj,而只要求在给定点人上误差「二f(xj-y i按照某种标准达到最小,通常 采用欧氏范数|卜2作为误差量度的标准。这就是所谓的最小二乘法。在MATLAB中实现最

《MATLAB及应用》实验报告2

核科学技术学院 实验报告 实验项目名称MATLAB符号计算 所属课程名称MATLAB及应用 实验类型上机实验 实验日期12月日 指导教师谢芹 班级 学号 姓名 成绩 一、实验名称 MATLAB符号计算 二、实验目的

(1)掌握定义符号对象的方法 (2)掌握符号表达式的运算法则以及符号矩阵运算 (3)掌握求符号函数极限及导数的方法 (4)掌握求符号函数定积分和不定积分的方法 三、实验原理 1. 函数极限及导数的方法 (1)函数极限:limit(F,x,a) 求符号函数f(x)的极限值。即计算当变量x趋近于常数a时,f(x)函数的极限值。 (2)limit(f):求符号函数f(x)的极限值。符号函数f(x)的变量为函数findsym(f)确定的默认变量;没有指定变量的目标值时,系统默认变量趋近于0,即a=0的情况。 (3)limit(f,x,a,'right'):求符号函数f的极限值。'right'表示变量x从右边趋近于a。 (4)limit(f,x,a,‘left’):求符号函数f的极限值。‘left’表示变量x从左边趋近于a。 2. 微分: diff(s):没有指定变量和导数阶数,则系统按findsym函数指示的默认变量对符号表达式s求一阶导数。 diff(s,'v'):以v为自变量,对符号表达式s求一阶导数。 diff(s,n):按findsym函数指示的默认变量对符号表达式s求n阶导数,n为正整数。 diff(s,'v',n):以v为自变量,对符号表达式s求n阶导数。 3. 函数定积分和不定积分的方法: int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表达式s求不定积分。 int(s,v):以v为自变量,对被积函数或符号表达式s求不定积分。 int(s,v,a,b):求定积分运算。a,b分别表示定积分的下限和上限。 梯形法:trapz(x,y):x为分割点构成的向量,y为被积函数在分割点上的函数值构成的向量; 抛物线法:quad(f,a,b,tol),f是被积函数,[a,b]是积分区间,tol是精度。

相关主题
文本预览