当前位置:首页 > Matlab 入门教程
fid=fopen('data1.txt','w'); fprintf(fid,'%8.4f',a); fclose(fid); load data1.txt data1
iii)save 的指令格式
save filename 变量1 变量2 ?
使用load filename 即可把变量1、变量2、?调出来。 如果要保存为ASCII 码,就要在后面加上-ascii
-306-
save filename 变量1 变量2 ? -ascii
对于save 指令,处理大量数据存取有一个技巧非常有用,即:
save(‘filename’,’变量1’,’变量2’,?)
由于filename 是用字符串表示的,所以可以使用程序进行控制,使其每处理 完一次就存一个不同的文件名称。 例
clear,clc m=1:10;
for i=1:length(m) n=m.^2;
nf=[m',n'];
t=char(['nf',int2str(i),'=nf']) eval(t)
save(['data',int2str(i)],['nf',int2str(i)]) end
iv)load 纯文本文件 load filename.txt
就建立了变量名为filename 的数据。
例 现有一纯文本数据文件caipao.txt,保存了山东省65 期的福利彩票中奖 号码,试对中奖号码给出一些统计,并按一定的规则产生两组彩票号码。 clc,clear
load caipiao.txt; cp=caipiao; for i=1:30
b(i)=length(find(cp==i)); end
[b,id]=sort(b);
mai1=sort(id(1:7)), mai2=sort(id(24:30)) fid1=fopen('cpsj.txt','w');
fprintf(fid1,'m m m m m m m m\\n',caipiao'); fclose(fid1);
§5 动画制作
动画制作通常有两种方法:一种是预先将图形制作好,并放到图形缓冲区内,然后
一帧一帧地播放。另一种方法是保持整个背景图案不变,只更新运动部分的图案,以便
加快每幅图的实时生成速度。
1.简单动画制作
在 getframe 命令下,可以完成动态数据到动态画面的制作。其使用格式及制作步 骤一般为: for j=1:n plot_command M(j) = getframe;
end
movie(M,n)
其中M(j)=getframe 将当前图形窗口中的画面作为第j 帧存入矩阵M,movie(M,n)将按
-307-
顺序放映矩阵M 中存储的画面,并重复n 次。 例
x=-3:0.1:3;
[x,y]=meshgrid(x);
z=sin(x.*y).*exp(x.*y/5); for j=1:30
mesh(cos(4*pi*j/30)*z,z) m(j)=getframe end
movie(m,10)
例 模拟 6 个移动物体
x0=[150 85 150 145 130 0]; y0=[140 85 155 50 150 0];
q=[243 236 220.5 159 230 52]*pi/180; t=0:0.05:2*pi; for i=0:280 pause(0.01); for j=1:5
axis([0 160 0 160]);
fill(x0(j)+0.8*i*cos(q(j))+4*cos(t),y0(j)+0.8*i*sin(q(j))+4*sin(t),'b') hold on;
end
fill(x0(6)+0.8*i*cos(q(6))+4*cos(t),y0(6)+0.8*i*sin(q(6))+4*sin(t),'r') hold off; end
2.其它例子
在 Matlab 里利用图形的“EraseMode”属性可以实现显示新对象,擦除旧对象,而 又不破坏背景图案。图形的“EraseMode”属性有以下四种: normal 方式
重绘整个显示区,这种方式产生的图形最准确,但较慢。 none 方式
不做任何擦除,直接在原来图形上绘制。 xor 方式
对象的绘制和擦除由背景颜色和屏幕颜色的异或而定。只擦除和屏幕颜色不一致 的旧对象的点,只绘制和屏幕颜色不一致的新对象的点。 background 方式
把旧对象的颜色变为背景色,这种方式影响被擦除对象下面的对象。
当新对象的属性修改后,应刷新屏幕,使新的对象显示出来。Matlab 里屏幕刷新 的命令是drawnow。drawnow 命令使Matlab 暂停目前的任务而去刷新屏幕。若不使用 drawnow 命令,Matlab 则等到任务序列执行完后才刷新。
例 布朗运动
(1)先确定布朗运动的点数n 和一个温度s(或速度)。比如n=20,s=0.002。达 到最好的动画效果的n、s 与使用的计算机的性能有关。在以原点为中心、边长为1 的 正方形内产生n 个位置随机分布的点。
-308-
(2)在单位正方形里绘制所有的点。设置图形的“EraseMode”属性为异或(xor), 即当图形的某个点的位置变化时,不用全部重绘图形,而只绘制不相同的部分,这将大 大提高绘图速度。
(3)用while 循环实现动画效果,在每一次循环中给点的坐标加上一些正态分布 的噪声,这样整个图形中只有点的坐标发生变化,而不用全部重绘整个图形。 程序如下: clc,clear n=20;s=0.002; axis square
grid off
x=rand(n,1)-0.5;y=rand(n,1)-0.5; h=plot(x,y,'.');
set(h,'EraseMode','xor','MarkerSize',18) while 1
x=x+s*rand(n,1);y=y+s*rand(n,1) set(h,'Xdata',x,'Ydata',y) if all(x>1) & all(y>1) break end
drawnow
end
例 制作一幅钻石沿着圆周运动的动画。 程序如下: t=0:pi/200:pi*2; x=sin(t);y=cos(t); axis square plot(x,y,'b') n=length(t);
h=line('color','red','marker','diamond','erasemode','xor'); i=1;j=1; while 1
set(h,'xdata',x(i),'ydata',y(i))
drawnow i=i+1;j=j+1; if i>n i=1; end if j>2*n break end end 习题一
1.存储工作间变量x,y,z 到文件data1.mat,再在程序中调用变量x,y,z。 2.产生20 个随机数,再把这20 个随机数存放在纯文本文件中。__
共分享92篇相关文档