matlab案例

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例1:将一个数值变量按任意精度显示

vpa('pi',1000)

vpa(sin(8),100)

例2 一个简单的加密程序

%本程序是通过随机的方式把一个字符串显示出来,起到简单的

%加密作用。

a='等候你。我望着户外的昏黄同望着将来,我的心震盲了我的听。你怎还不来?希望每一秒钟上允许开花。我守候着你的步履,你的笑语,你的脸,你的柔软的发丝,守候着你的一切;希望在每一秒钟上枯死──你在哪里?我要你,要得我心里生痛,我要你火焰似的笑,要你灵活的腰身,你的发上眼角的飞星;我陷落在迷醉的氛围中,像一座岛,在蟒绿的海涛间,不自主的在浮沉……喔,我迫切的想望你的来临,想望那一朵神奇的优昙开上时间的顶尖!';

n=length(a);

key=randperm(n);

jiami=a(key)%加密后的字符串

%下面进行解密

jiemi=a;

for i=1:n

jiemi(key(i))=jiami(i);

end

jiemi

例3: Monte Carlo估计 值

ninside=0;

piest=zeros(500,1);

for k=1:500;

x=rand(100,1);y=rand(100,1);

ninside=ninside+sum(x.^2+y.^2<=1);

piest(k)=ninside/(100*k)*4;

end

plot(piest)

xlabel('试验次数')

例4:不规则边构成图形面积的计算方法

(1)monte carlo 方法(请思考除增加样本以外提高精度的方)

clear;clc;

%先用随机方式产生曲边坐标

qbzb=[sort(rand(20,1)),sort(rand(20,1))];

x=qbzb(:,1);y=qbzb(:,2);

%x坐标的范围

xmin=min(x);xmax=max(x);

%y坐标的范围

ymin=min(y);ymax=max(y);

%利用5阶多项式进行拟合。主要是为了得到一个曲边函数,用于判断随机点时候%在曲边下侧

fit_fun=polyfit(x,y,5);

n=10000;

samples=rand(n,2);

xx=samples(:,1);yy=samples(:,2);

fit_val=polyval(fit_fun,xx);

ninside=sum(fit_val<=yy);

s=ninside/n*(ymax-ymin)*(xmax-xmin)

ss=trapz(x,y)

(2)插值后用梯形公式

clear;clc;

%先用随机方式产生随机坐标

zuobiao=[sort(rand(20,1)),sort(rand(20,1))];

x=zuobiao(:,1);y=zuobiao(:,2);

%x坐标的范围

xmin=min(x);xmax=max(x);

%y坐标的范围

ymin=min(y);ymax=max(y);

%利用8阶多项式进行拟合。

fit_fun=polyfit(x,y,8);

%也可以用插值方式

xi=linspace(xmin,xmax,40);

yi=interp1(x,y,xi,'spline')

subplot(121),plot(x,y,x,polyval(fit_fun,x),'r:',xi,yi,'k-')

axis([0 1 0 1]);

fun1=poly2sym(fit_fun);

subplot(122),ezplot(fun1,[xmin,xmax])

axis([0 1 0 1]);

s1=eval(int(poly2sym(fit_fun),xmin,xmax))

s2=trapz(x,y)%比较接近精确值

s3=trapz(x,polyval(fit_fun,x))

s4=trapz(xi,yi)

例3:对于不规则多边形面积的计算

思路:可将该多边形分解

例4:Matlab中动画的绘制

(1)带运动轨迹的动画:comet及comet3

t=0:pi/500:10*pi;

subplot(1,2,1),comet(t,sin(t));

subplot(1,2,2),comet3(sin(t),cos(t),t);

(2)getframe

Z = peaks; surf(Z)

axis tight

set(gca,'nextplot','replacechildren');

for j = 1:50

surf(sin(2*pi*j/20)*Z,Z)

F(j) = getframe;

end

movie(F,50)

(3)drawnow

t = 0:pi/20:2*pi;

y = exp(sin(t));

h = plot(t,y,'YDataSource','y');

for k = 1:.1:10

y = exp(sin(t.*k));

refreshdata(h,'caller') % Evaluate y in the function workspace

drawnow; pause(.1)

end

一、矩阵及向量的操作

1、矩阵的定义:

(1)用[ ]生成:

a=[1 2 3;4,5,6]

逗号或空格-----分隔不同的列;

相关文档
最新文档