可以加一个大循环,N为变量,步长为200 (eg: for N=384:200:
如果不确定循环结束时N的值,可以while 1 {if (条件)break;end}
保存mm就很简单了
运行前,建立一个空矩阵temp_mm=[];
每次N值改变完后,temp_mm=[temp_mm;mm];(将每次mm的值保存在temp_mm的最后一行)
function cat_mouse
clear
clc
mov=avifile('cat_mouseavi');
ts=0:0005:05;
x0=[0,0];
[t,x]=ode45(@cat_m,ts,x0);
n=length(x);
figure(1)
plot(0,0,'')
hold on
h1=line( 'Color' ,[0 0 1], 'Marker' , '' , 'MarkerSize' ,40, 'EraseMode' , 'xor' );
h2=line(15,0,'MarkerFaceColor',[0 1 0],'Marker','h', 'MarkerSize' ,15, 'EraseMode' , 'xor');
plot(15,0,'')
line([15 15],[0 11],'LineWidth',2)
axis equal
axis([0 16 0 11])
title('猫追耗子动画演示')
for i=1:n-1
plot(x([i i+1],1),x([i i+1],2))
set(h1, 'xdata' ,x(i+1,1), 'ydata' ,x(i+1,2));
set(h2, 'xdata' ,15, 'ydata' ,20t(i+1));
drawnow; % 刷新屏幕
pause(0005)
f=getframe(gcf);
mov=addframe(mov,f);
end
hold off
mov=close(mov);
后面是子程序
function dx=cat_m(t,x)
a=20;b=40;c=15;
s=sqrt((c-x(1))^2+(at-x(2))^2);
dx=[b(c-x(1))/s;b(at-x(2))/s];
上次看到一个网友做的猫捉老鼠的实现,其实就是导d追踪问题
可以在editor里面进行调试运行。
写好代码以后,运行的话可以直接单击editor菜单里面的run。
调试的方法就多种多样了:
1、可以把先不想运行队部分加上注释,着重运行需要调试的部分。
2、用%%把代码分块,用run section分块运行。
3、在中间加上输出语句、监视中间的结果。
4、用breakpoints设置断点,在运行中间查看程序运行情况。
如图所示,设置两个全局变量,h2是标志,h3用来获得figure(2)的句柄,一旦按下button7,则h2变成1,并且d出figure(2)界面,最后一行代码最关键,设置figure(2)关闭时的函数语句,一旦关闭了figure(2),则置标志h2=0
1、一定要利用好M-file编辑器,因为会有一些着重标示的优化建议。
例如,你在编辑器里输入以下代码:
for k = 1:NumTrials
r = rand;
x(k) = runsim(r);
end
hist(x);
它会用红色波浪线表示出来,提示你最好先预设x的值。
另外:
最好在一个单独的文件夹里运行程序;
写好程序代码的注释,利人利己;
将常用的命令存下来,方便以后调用。
2、在运行循环的时候,一定要预设变量值!
可以用 cell 和zeros这两个矩阵命令,对变量进行预设。
例如,
a(1) = 1;
b(1) = 0;
for k = 2:8000
a(k) = 099803 a(k -1)-006279 b(k-1);
b(k) = 006279 a(k-1) + 099803 b(k-1);
end
,没有预设,大约耗费047秒;
a = zeros(1,8000); % Preallocation
b = zeros(1,8000);
a(1) = 1;
b(1) = 0;
for k = 2:8000
a(k) = 099803 a(k -1)-006279 b(k-1);
b(k) = 006279 a(k-1) + 099803 b(k-1);
end
有预设,大约耗费014秒!
以上就是关于求助Matlab大神! 如何让程序自动改变参数重复运行,并保存数据全部的内容,包括:求助Matlab大神! 如何让程序自动改变参数重复运行,并保存数据、运动目标检测matlab程序、matlab程序怎样调试和运行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)