Matlab8个例子

  • 格式:doc
  • 大小:46.00 KB
  • 文档页数:7

1、囧function happynewyearaxis off;set(gcf,'menubar','none','toolbar','none');for k=1:20h=text(rand,rand,...['\fontsize{',num2str(unifrnd(20,50)),'}\fontname {隶书} 新年快乐'],...'color',rand(1,3),'Rotation',360 * rand);pause(0.5)End2、小猫进洞function t=cat_in_holl(n)t=zeros(1,n);for k=1:nc=unifdnd(3,1);while c~=1if c==2t(k)=t(k)+4;elset(k)=t(k)+6;endc=unifdnd(3,1);endt(k)=t(k)+2;End3、Slowfunction example2_3_6stic;A=unidrnd(100,10,7);B=zeros(10,3);for m=1:10a=A(m,:);b=[4,6,8];for ii=1:3dd=a(a==b(ii));if isempty(dd)==0b(ii)=0;endendB(m,:)=b;tocendA,BFastfunction example2_3_6fast2clearA = unidrnd(100,1000000,7);B = repmat([4,6,8],1000000,1);tic;C = [any(AA == 4,2) any(AA == 6,2) any(AA == 8,2)];B(C) = 0;Toc4、随机行走法function [mx,minf]=randwalk(f,x,lamda,epsilon,N)%随机行走法求函数的极小值。

输入f为所求函数的句柄,%x为初始值。

lamda为步长。

epsilon为控制lamda的减小的阈值,即lamda 减小到epsilon时%迭代停止。

%N为为了产生较好点的迭代控制次数。

%函数返回值mx为n次试验得到的最优解,minf为响应的最优值。

f1 = f(x(1),x(2));while(lamda>=epsilon)k = 1;while(k<=N)u = unifrnd(-1,1,1,2);x1 = x+lamda*(u/norm(u));f11 = f(x1(1),x1(2));if f11<f1f1 = f11;x = x1;k = 1;elsek = k+1;endendlamda = lamda/2;endmx = x1;minf = f1;5、三角形function triangle_tablefig =figure('defaultuicontrolunits','normalized','name','triangl e_table',...'numbertitle','off','menubar','none');ah = axes('Pos',[.1 .2 .75 .75],'Visible','off');slider_h =uicontrol('style','slider','units','normalized','pos',...[0.1,0.05,0.75,0.05],'sliderstep',[1/6,0.05],'callback',@ch ange_color);hold onfor k = 0:6plot(0:6-k,(6-k)*ones(1,(7-k)),'k');plot(k*ones(1,(7-k)),k:6,'k');endplot([0,6],[0,6],'k');hold off;for x = 1:5for y = 1:xtext(y-0.5,x+0.5,num2str(x),'color','k','tag','数字');endendfor k = 0:5text(k+0.1,k+0.5,[num2str(k),'.5'],'tag','数字');end%====slider's callback function(nested function)====== function change_color(hObject,eventdata)v = round(6*get(slider_h,'value'));num_h = findobj('tag','数字');num_pos = get(num_h,'pos');red_num_logic = cellfun(@(x)(x(1)<=v&&x(2)<=v),num_pos);set(num_h(red_num_logic),'color','r');set(num_h(~red_num_logic),'color','k');endend6、3D作图function [m,n,TT]=plot3dnmT(N,L)%N:inf的近似,L:[0,2]区间的剖分个数C=zeros(N,1);%nested-function:Tmn=calcT(mm,nn)中用来存储计算结果m=linspace(0,2,L);[m,n]=meshgrid(m,m);TT=zeros(size(n));%和网格数据m,n对应的计算出来的T(m,n)网格数据for ii=1:Lfor jj=1:LTT(ii,jj)=calcT(m(ii,jj),n(ii,jj));endend%=====计算T(m,n)的nest-functionfunction Tmn=calcT(mm,nn)for N1=1:NC(N1)=(mm^N1/gamma(N1+1))*sum( nn.^(0:N1-1)./gamma(1:N1) ) ;Tmn=1.0-exp(-mm-nn)*sum(C);endendmesh(n,m,TT);end7、定时输出function example12_2_1TimerA = timer('timerfcn',@TimerFun,'StartDelay',unidrnd(5000,1)/1000,...'executionmode','fixedrate');%用来记录TimerFun函数执行的次数,由于通过StartDelay方式实现每隔随机一段时间进行特定%操作时,需要反复停止与启动定时器,因此TasksExecuted就不准确了。

set(TimerA,'userdata',0);num = 5;%随机显示5次后,就停止定时器start(TimerA)function TimerFun(obj,event)set(TimerA,'userdata',get(TimerA,'userdata')+1);disp(['间隔时间为',num2str(get(TimerA,'startDelay')),' S!']);disp('Hello World!');stop(TimerA);set(TimerA,'StartDelay',unidrnd(5000,1)/1000);start(TimerA);while get(TimerA,'userdata')==numstop(TimerA)return;endendEnd8、鸭子function DuckLakeSegmentation%导入图像文件引导对话框[filename,pathname,flag] = uigetfile('*.jpg','请导入图像文件');Duck = imread([pathname,filename]);LakeTrainData = [52 74 87;76 117 150;19 48 62;35 64 82;46 58 36;...50 57 23;110 127 135;156 173 189;246 242 232;...166 174 151];%从图上选取的几个位于湖面区域的有代表的点的RGB值%从图上选取的几个位于鸭子区域的有代表的点的RGB值DuckTrainData = [211 192 107;202 193 164;32 25 0;213 201 151;115 75 16;...101 70 0;169 131 22;150 133 87];%属于湖的点为0,鸭子为1group = [zeros(size(LakeTrainData,1),1);ones(size(DuckTrainData,1),1)];LakeDuckSVM = svmtrain([LakeTrainData;DuckTrainData],group,...'Kernel_Function','polynomial','Polyorder',2);%训练得到支持向量分类机[m,n,k] = size(Duck);Duck1 = double(reshape(Duck, m*n, k));%将数组Duck转成m*n行,3列的双精度矩阵%根据训练得到的支持向量机对整个图像的像素点分类IndDuck = svmclassify(LakeDuckSVM,Duck1);IndLake = ~IndDuck;%属于湖的点的逻辑数组result = reshape([IndLake, IndLake, IndLake],[m,n,k]);%和图片的维数相对应Duck2 = Duck;Duck2(result) = 0;figureimshow(Duck2)。