[教学]MATLAB小程序
基于内容的图像检索matlab小程序
基于内容的图像检索matlab小程序基于内容的图像检索matlab小程序,使用图像的9种主要颜色为检索特征。
% RGB retrieval%fid=fopen('ninecolor3_distr.dat','r'); normalized central moments fid=fopen('ninecolor2_distr.dat','r');%fid2=fopen('edge2_radon_svd0.dat','r');%fid1=fopen('edge2_radon_svd90.dat','r');%fid3=fopen('edge2_radon_0org.dat','r');%fid4=fopen('edge2_radon_90org.dat','r');fid2=fopen('ninecolor2_dist.dat','r');PCACOE=10;MU=0.78315;DLT=0.16879;MAX=1.6582;MIN=0;MU1=58.781;DLT1=19.922;MAX1=130.83;MIN1=0;MU2=2.6843;DLT2=0.66799;MAX2=4.5187;MIN2=0;%fid1=fopen('avecolor.dat','r'); %for (i=1:910)% tmp_mom=fread(fid1,10,'float'); % ind12(:,i)=tmp_mom(1:PCACOE); % tmp_mom=fread(fid2,10,'float'); % ind13(:,i)=tmp_mom(1:PCACOE); %end %ind_pca0=ind12';%ind_pca90=ind13';%fclose(fid1);%fclose(fid2);%for (i=1:910)% tmp_mom=fread(fid3,128,'float'); % ind14(:,i)=tmp_mom(1:128); % tmp_mom=fread(fid4,128,'float'); % ind15(:,i)=tmp_mom(1:128); %end %ind_0org=ind14';%ind_90org=ind15';%fclose(fid3);%fclose(fid4);for (i=1:910)hist1(:,i)=fread(fid2,18,'float'); endind_dis=hist1';fclose(fid2);for (i=1:910)hist(:,i)=fread(fid,63,'float'); endind_c=hist';fclose(fid);NULL_seg=[0 0 0 0 0 0 0];isize=910;qi=1;dist1=0;qi=input('Query image no:(1-910 or 0 to quit)');while (qi~=0)qh=ind_c(qi,:);for (cnt=1:910)dist=0;db=ind_c(cnt,:);for (j=1:9)%% L1/L2 Distancestmp_vec=qh((j-1)*7+1:j*7);tmp_vec1=db((j-1)*7+1:j*7);%if ((tmp_vec==NULL_seg)|(tmp_vec1==NULL_seg))%% if (sum(tmp_vec(4:6))~=0) %% angl=1-(2/pi)*acos(abs(tmp_vec(4:6)*tmp_vec1(4:6)'));%% else%% angl=0;%% end%% if (angl<0)%% angl=0;%% end%dist=dist+norm(tmp_vec(1:3)-tmp_vec1(1:3),2)+angl+abs(tmp_vec(7)-tmp_vec1(7));dist=dist+norm(tmp_vec(1:6)-tmp_vec1(1:6),2)+abs(tmp_vec(7)-tmp_vec1(7));%dist=dist+norm(tmp_vec-tmp_vec1,1);end% Distance of SVD coefficients%%dist1=0.5*(norm(ind_pca90(qi,:)-ind_pca90(cnt,:),2)+norm(ind_pca0(qi,:)-ind_pca0(cnt,:),2));%%dist2=0.5*(norm(ind_90org(qi,:)-ind_90org(cnt,:),2)+norm(ind_0org(qi,:)-ind_0org(cnt,:),2));%% New distance%%DIST=0;%% for (k=1:9)%% DIST=DIST+qh(k*7)^2;%5 end%% for (j=1:9)%% DIST=DIST+db(j*7)^2;%% end%% for (k=1:9)% for (j=1:9)% tmp_arr=db((j-1)*7+1:j*7);%% d1=norm(qh((k-1)*7+1:(k-1)*7+6)-tmp_arr(1:6),2); % if (d1>0.08)% a1=0;% else% a1=1-d1/0.096;% end% DIST=DIST-2*a1*qh(k*7)*tmp_arr(7);%dist00(k,j)=norm(query0((k-1)*4+1:(k-1)*4+3)-tmp_arr(1:3),2)+sum(abs(query0(k*4)-tmp_arr(4)));%dist00(k,j)=sum(abs(query0((k-1)*4+1:(k-1)*4+4)-tmp_arr(1:4)));%%dist00(k,j)=norm(query0((k-1)*4+1:(k-1)*4+3)-tmp_arr(1:3),1)+(1-min(query0(k*4),tmp_arr(4))/max(query0(k*4),tmp_arr(4)));%%dist01(k,j)=norm(query0((k-1)*2+1:k*2)-tmp_arr(1:2),2);%dist01(k,j)=norm(ind_ctroid(qi,(k-1)*2+1:k*2)-ind_ctroid(cnt,(j-1)*2+1:j*2),2);%%dist02(k,j)=norm(hsv_pca0(q_no+k-1,:)-hsv_pca0(db_no+j-1,:),2)+norm(hsv_pca90(q_no+k-1,:)-hsv_pca90(db_no+j-1,:),2);%% end%% end%% dist=DIST;dist1=norm(ind_dis(qi,:)-ind_dis(cnt,:),1);%dist=0.0*dist+1.0/1*(dist1-(MU-3*DLT))/(6*DLT);%dist=0.0*dist+1.0/1*(dist1-MIN)/MAX; dist2=0;dist=1.0*(dist-(MU2-3*DLT2))/(6*DLT2)+0.0*(dist1-(MU1-3*DLT1))/(6*DLT1)+0.0*dist2;result(:,cnt)=[dist cnt]';end%查询结果显示format short g;result1=result';%result2(:,1)=result1(:,2);%result2(:,2)=result1(:,1);result2=sortrows(result1);%disp(result2(isize-9:isize,:)); disp(result2(1:10,:));%Display first ten IMAGESpause;%name=input('Search image:','s'); i=0;%figure;rank=1;%for (k=isize:-1:isize-9)wh=figure;set(wh,'Color',[0.8 0.8 0.8]);set(wh,'Units','Normal');set(wh,'Position',[0.05 0.05 0.9 0.8]); set(wh,'MenuBar','none'); for (k=1:50)bmpno=round(result2(k,2)-1);iname=sprintf('f:\\image\\img\\%d.jpg',bmpno);[img map]=imread(iname);if (isrgb(img))[img map]=rgb2ind(img,256);endimg=imresize(img,[200 256]); %[128 128]hdl=subplot(5,10,rank);sv=strcat('',num2str(result2(k,1)));% frno=ceil(k/10);% fcno=mod(k,10);% if (fcno==0)% fcno=10;% end%subimage((frno-1)*0.1,(fcno-1)*0.1,img,map);subimage(img,map);%%set(hdl,'Units','Pixels');%%set(hdl,'Position',[0.05+mod(rank-1,10)*0.09 0.95-(floor((rank-1)/10)+1)*0.18 0.09 0.18]);%%lh=get(hdl,'Xlabel');%%set(lh,'String',sv);set(hdl,'Title',text('String',sv));posxy=get(hdl,'Position');%%set(gcf,'Units','normalized');rfcbox=uicontrol(gcf,'Style','Checkbox','Units','normalized',...'Position',[posxy(1) posxy(2)-0.02 0.086 0.052],...'String','RF=N','CallBack','my_rf');%% ['set(gca,"RF","N"),','if get(rfcbox,"Value")==1,', 'set(gca,"RF","Y"),','end'] 'String','Box=on',...set(hdl,'YTickLabel',[]),set(hdl,'XTickLabel',[]);%set(hdl,'YGrid','off'),set(hdl,'XGrid','off');set(hdl,'YTick',[]),set(hdl,'XTick',[]);set(hdl,'Box','off');rank=rank+1;end%end%flopsqi=input('Query image no:(1-110 or 0 to quit)');end。
matlab小程序
命令窗口:
五、实验结果分析与总结
通过简单实例熟悉 matlab 程序的基本语法,并通过两种方法的表达 实现 MATLAB 程序的简单化及实用化。程序中 MATLAB 的一些基本函数会 极大的增加程序的简单化,所以需要自己掌握些基本的函数。
命令窗口:
方法《2》 :用 switch 语句。 命令文件 file3:
命令窗口:
3、输入 20 个数,求其中最大数和最小数。要求分别用循环结构和调用 MATLAB 的 max 函数 和 min 函数来实现。 方法<1>用循环结构 命令文件 file4:
命令窗口:
方法<2>:调用 MATLAB 的 max 函数和 min 函数 命令文件 file5:
二、实验目的
1.掌握利用if语句,switch语句实现选择结构的方法; 2.掌握利用 for 语句,while 语句实现循环结构的方法; 3.熟悉利用向量运算来代替循环操作的方法并理解 MATLAB 程序设计的特点;
四、实验内容和步骤 1、从键盘输入一个 3 位整数,将它向输出。如输入 639,输出 936。 命令文件 file1:
命令窗口:
4、编写程序,产生 20 个两位随机整数,输出其中小于平均值的偶数。 命令文件:file6
命令窗口:
实验总结:rand()函数为产生随机数函数
x 1 x 3 1 x 1 , 5、计算分段函数的值。 y x e x 1 1 x
命令文件 file7:
命令窗口:
实验总结:fix 函数为取整函数,file1 中 a,b,c 分别为百位、十位、个位数。 2、输入一个百分制成绩,要求输出成绩等级 A、B、C、D、E。其中 90-100 为 A,80-90 为 B,70-79 为 C,60-69 为 D,60 分以下为 E。 要求: (1) 分别用 if 语句和 switch 语句来实现 (2) 输入的百分制成绩后要判断该成绩的合if 语句。 命令文件 file2:
[教学]MATLAB小程序
[教学]MATLAB小程序MATLAB小程序1-1.1 描绘出“点”%密度和穗花被害率x=[0,3,10,20,30,40];y1=[0,0.273,2.260,2.550,2.920,3.950];subplot(2,2,1);plot(x,y1);title(' 密度和穗花被害率');xIabelC 头肝八2');ylabel(' 穗花被害率%');%密度和结实率x=[0,3,10,20,30,40];y2=[94.4,93.2,92.1,91.5,89.9,87.9];subplot(2,2,2);plot(x,y2);title(' 密度和结实率');xIabelC 头/m^2');ylabel(' 结实率%');%密度和千粒重x=[0,3,10,20,30,40];y3=[21.37,20.60,20.60,20.50,20.60,20.13];subplot(2,2,3);xIabelC 头/mV);ylabel(' 千重粒g');%密度和减产率x=[0,3,10,20,30,40];y4=[0,2.4,12.9,16.3,20.1,26.8];subplot(2,2,4);plot(x,y4);title(' 密度和减产率');xlabel(' 头/mV);ylabel(' 减产率%')%1-1.2 表2 稻纵卷叶螟与水稻作用的数据%产量损失率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112. 50];y1=[0.73,1.11,2.2,3.37,5.05,6.78,7.16,9.39,14.11,20.06]; subplot(2,2,1);plot(x,y1);title(' 密度和减产率');xIabelC 头/m^2');ylabel(' 减产率%');%卷叶率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112. 50];y2=[0.76,1.11,2.22,3.54,4.72,6.73,7.63,14.82,14.93,20.40]; subplot(2,2,2);xIabelC 头肝八2');ylabel(' 卷叶率%');%空壳率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112. 50];y3=[14.22,14.43,15.34,15.59,16.87,17.10,17.21,20.59,23.19,2 5.16];subplot(2,2,3);plot(x,y3);title(' 密度和减产率');xIabelC 头/m^2');ylabel(' 空壳率%');%进行曲线拟合%密度和穗花被害率x=[0,3,10,20,30,40];y1=[0,0.273,2.260,2.550,2.920,3.950];subplot(2,2,1);p=polyfit(x,y1,4) x=linspace(0,40,40);y=polyval(p,x);plot(x,y);title(' 密度和穗花被害率');xIabelC 头肝八2');ylabel(' 结实率%');%密度和结实率x=[0,3,10,20,30,40];y2=[94.4,93.2,92.1,91.5,89.9,87.9]; subplot(2,2,2);p=polyfit(x,y2,4) x=linspace(0,40,40);y2=polyval(p,x);plot(x,y2);title(' 密度和结实率');xIabelC 头/mV);ylabel(' 结实率%');%密度和千粒重x=[0,3,10,20,30,40];y3=[21.37,20.60,20.60,20.50,20.60,20.13]; subplot(2,2,3);p=polyfit(x,y3,4)x=linspace(0,30,30);y3=polyval(p,x);plot(x,y3);title(' 密度和千粒重');xIabelC 头肝八2');ylabel(' 千重粒g');%密度和减产率x=[0,3,10,20,30,40];y4=[0,2.4,12.9,16.3,20.1,26.8];subplot(2,2,4);p=polyfit(x,y4,4) x=linspace(0,40,40);y4=polyval(p,x)plot(x,y4);title(' 密度和减产率');xlabel(' 头/mV);ylabel(' 减产率%')%1-1.2 表2 稻纵卷叶螟与水稻作用的数据%产量损失率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112.50]; y1=[0.73,1.11,2.2,3.37,5.05,6.78,7.16,9.39,14.11,20.06]; subplot(2,2,1);plot(x,y1);title(' 产量损失率');xIabelC 头/mV);ylabel(' 减产率%');%卷叶率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112.50];y2=[0.76,1.11,2.22,3.54,4.72,6.73,7.63,14.82,14.93,20.40]; subplot(2,2,2);plot(x,y2);title(' 卷叶率');xIabelC 头肝八2');ylabel(' 卷叶率%');%空壳率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112.50];y3=[14.22,14.43,15.34,15.59,16.87,17.10,17.21,20.59,23.19,25.16]; subplot(2,2,3);plot(x,y3);title(' 空壳率');xlabel(' 头/mV);ylabel(' 空壳率%')%1-1.2 表2 稻纵卷叶螟与水稻作用的数据%产量损失率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112.50];y1=[0.73,1.11,2.2,3.37,5.05,6.78,7.16,9.39,14.11,20.06];subplot(2,2,1);title(' 产量损失率');xIabelC 头肝八2');ylabel(' 减产率%');%卷叶率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112.50];y2=[0.76,1.11,2.22,3.54,4.72,6.73,7.63,14.82,14.93,20.40];p=polyfit(x,y1,4)x=linspace(0,115,30);y=polyval(p,x);plot(x,y);subplot(2,2,2);p=polyfit(x,y2,4) x=linspace(0,115,30);y=polyval(p,x);plot(x,y) title(' 卷叶率');xIabelC 头/mV);ylabel(' 卷叶率%');%空壳率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112. 50];y3=[14.22,14.43,15.34,15.59,16.87,17.10,17.21,20.59,23.19,2 5.16];subplot(2,2,3);p=polyfit(x,y1,4)x=linspace(0,115,30);y=polyval(p,x);plot(x,y);title(' 空壳率');xIabelC 头肝八2');ylabel(' 空壳率%')题 1.3 代码%x为臭氧持续作用时间,y为病虫害经臭氧处理时的剩余数量比例,%z%臭氧喷嘴出口处检测到的臭氧浓度x=[0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5];y=[93,89,64,35,30,25,18,10,0,0,0];z=[0.15,0.40,0.75,1.00,1.25,1.50,1.80,2.10,2.25,2.65,2.85]; plot3(x,y,z,'m');text(0,0,0,'origin');xlabel(' 小时'),ylabel(' 病虫剩余数量比例%'),zlabel(' 臭氧喷嘴出口处检测到的臭氧浓度'),grid;title(' 臭氧浓度与真菌作用');进行曲线拟合%x为臭氧持续作用时间,y为病虫害经臭氧处理时的剩余数量比例,%z%臭氧喷嘴出口处检测到的臭氧浓度x=[0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5];y=[93,89,64,35,30,25,18,10,0,0,0];z=[0.15,0.40,0.75,1.00,1.25,1.50,1.80,2.10,2.25,2.65,2.85];p=polyfit(x,y,z,4) x=linspace(0,115,30);y=polyval(p,x);plot(x,y);text(0,0,0,'origin');xlabel(' 小时'),ylabel(' 病虫剩余数量比例%'),zlabel(' 臭氧喷嘴出口处检测到的臭氧浓度'), grid;title(' 臭氧浓度与真菌作用');。
Matlab实现别踩白块小游戏的示例代码
Matlab实现别踩⽩块⼩游戏的⽰例代码⽬录游戏效果游戏说明完整代码pianoKeys.m(主函数)getMusic.m(⽤于获取⾳乐数据)游戏效果游戏说明‘A’,‘S’,‘D’,F’按键代表四条通路(点击S开始),按错按钮或⿊块接触底限均为失败。
完整代码分两个m⽂件,应放在同⼀⽂件夹pianoKeys.m(主函数)function pianoKeys%======================%========[v1,notes,fs]=getMusic;%读取⾳乐%======================%========fig=uifigure;fig.Position=[10 50 4*90 4*150];fig.NumberTitle='off';fig.MenuBar='none';fig.Resize='off';='pianoKeys';ax=uiaxes(fig);ax.Position=[-22 -15 4*90+36 4*150+40];ax.XLim=[0 4*90];ax.YLim=[0 4*150];ax.XColor=[0 0 0];ax.YColor=[0 0 0];ax.Box='on';ax.XTick=0:90:360;ax.YTick=[0 600];ax.XGrid='on';ax.GridColor=[0 0 0];ax.GridAlpha=1;ax.Toolbar.Visible='off';%==========================================================================blockList(1)=drawBlock(changeData(1),0,{'开始';'游戏'},v1{1});noDeleteList=1:4;newBlockY=600;newBlockNum=5;startFlag=0;gameOver=0;for i=2:4x=changeData(i);blockList(i)=drawBlock(x,(i-1)*150,'',v1{i});end%==========================================================================set(fig,'KeyPressFcn',@keyPressFcn)%==========================================================================fps=10;PKtimer=timer('ExecutionMode', 'fixedRate', 'Period',1/fps, 'TimerFcn', @pianoGame);start(PKtimer)%========================================================================== function pianoGame(~,~)if startFlagif newBlockY<=600&&newBlockNum<=length(v1)tempX=changeData(newBlockNum);blockList(newBlockNum)=drawBlock(tempX,newBlockY,'',v1{newBlockNum});noDeleteList=[noDeleteList,newBlockNum];newBlockNum=newBlockNum+1;newBlockY=newBlockY+150;endfor ii=noDeleteListblockList(ii).Position(2)=blockList(ii).Position(2)-150/8;endnewBlockY=newBlockY-150/8;if (~isempty(noDeleteList))&&blockList(noDeleteList(1)).Position(2)<-10gameOverFcn(1);gameOver=1;%tempStr=blockList(noDeleteList(1)).UserData;%sound(notes.(tempStr),fs)%delete(blockList(noDeleteList(1)))%noDeleteList(1)=[];endendendfunction gameOverFcn(coe)sound([notes.do0f,notes.do1f,notes.do2f,notes.do2f],fs)switch coecase 1blockList(noDeleteList(1)).BackgroundColor=[0.6 0 0];blockList(noDeleteList(1)).Text={'游戏';'失败'};startFlag=0;otherwiseobject=uilabel(fig);object.Text={'游戏';'失败'};object.Position=[coe,0+3-18.75,90,150];object.FontSize=26;object.FontWeight='bold';object.FontColor=[1 1 1];object.BackgroundColor=[0.6 0 0];object.HorizontalAlignment='center';endendfunction keyPressFcn(~,event)switch event.Keycase 'a',xPos=0+3;case 's',xPos=90+3;case 'd',xPos=180+3;case 'f',xPos=270+3;otherwise,xPos=-1;endif (~isempty(noDeleteList))&&blockList(noDeleteList(1)).Position(1)==xPos&&gameOver==0tempStr=blockList(noDeleteList(1)).UserData;sound(notes.(tempStr),fs)delete(blockList(noDeleteList(1)))if noDeleteList(1)==1startFlag=1;endnoDeleteList(1)=[];elseif blockList(noDeleteList(1)).Position(1)~=xPos&&xPos~=-1&&gameOver==0&&startFlag==1startFlag=0;gameOverFcn(xPos);gameOver=1;endend%========================================================================== function x=changeData(sort)note=v1{sort};switch note(1)case 'd',x=0;case 'r',x=0;case 'm',x=90;case 'f',x=90;case 's',x=180;case 'l',x=180;case 't',x=270;case 'b',x=270;endendfunction object=drawBlock(x,y,string,note)object=uilabel(fig);object.Text=string;object.Position=[x+3,y+3,90,150];object.FontSize=26;object.FontWeight='bold';object.FontColor=[1 1 1];object.BackgroundColor=[0 0 0];object.HorizontalAlignment='center';erData=note;endendgetMusic.m(⽤于获取⾳乐数据) function [v1,notes,fs]=getMusic% Most shining national wind//最炫民族风 on Matlab % The Modification is from "canon", not by mefs = 44100; % sample ratedt = 1/fs;T16 = 0.125;t16 = 0:dt:T16;[~,k] = size(t16);t4 = linspace(0,4*T16,4*k);t8 = linspace(0,2*T16,2*k);[~,i] = size(t4);[~,j] = size(t8);% Modification functionsmod4=(t4.^4).*exp(-30*(t4.^0.5));mod4=mod4*(1/max(mod4));mod8=(t8.^4).*exp(-50*(t8.^0.5));mod8=mod8*(1/max(mod8));mod16=(t16.^4).*exp(-90*(t16.^0.5));mod16=mod16*(1/max(mod16));f0 = 2*146.8; % reference frequencyScaleTable = [2/3 3/4 5/6 15/16 ...1 9/8 5/4 4/3 3/2 5/3 9/5 15/8 ...2 9/4 5/2 8/3 3 10/3 15/4 4 ...1/2 9/16 5/8];% 1/4 notesnotes.do0f = mod4.*cos(2*pi*ScaleTable(21)*f0*t4); notes.re0f = mod4.*cos(2*pi*ScaleTable(22)*f0*t4); notes.mi0f = mod4.*cos(2*pi*ScaleTable(23)*f0*t4); notes.fa0f = mod4.*cos(2*pi*ScaleTable(1)*f0*t4); notes.so0f = mod4.*cos(2*pi*ScaleTable(2)*f0*t4); 0f = mod4.*cos(2*pi*ScaleTable(3)*f0*t4); notes.ti0f = mod4.*cos(2*pi*ScaleTable(4)*f0*t4); notes.do1f = mod4.*cos(2*pi*ScaleTable(5)*f0*t4); notes.re1f = mod4.*cos(2*pi*ScaleTable(6)*f0*t4); notes.mi1f = mod4.*cos(2*pi*ScaleTable(7)*f0*t4); notes.fa1f = mod4.*cos(2*pi*ScaleTable(8)*f0*t4); notes.so1f = mod4.*cos(2*pi*ScaleTable(9)*f0*t4); 1f = mod4.*cos(2*pi*ScaleTable(10)*f0*t4); notes.tb1f = mod4.*cos(2*pi*ScaleTable(11)*f0*t4); notes.ti1f = mod4.*cos(2*pi*ScaleTable(12)*f0*t4); notes.do2f = mod4.*cos(2*pi*ScaleTable(13)*f0*t4);notes.re2f = mod4.*cos(2*pi*ScaleTable(14)*f0*t4); notes.mi2f = mod4.*cos(2*pi*ScaleTable(15)*f0*t4); notes.fa2f = mod4.*cos(2*pi*ScaleTable(16)*f0*t4); notes.so2f = mod4.*cos(2*pi*ScaleTable(17)*f0*t4); 2f = mod4.*cos(2*pi*ScaleTable(18)*f0*t4); notes.ti2f = mod4.*cos(2*pi*ScaleTable(19)*f0*t4); notes.do3f = mod4.*cos(2*pi*ScaleTable(20)*f0*t4); notes.blkf = zeros(1,i);% 1/8 notesnotes.do0e = mod8.*cos(2*pi*ScaleTable(21)*f0*t8); notes.re0e = mod8.*cos(2*pi*ScaleTable(22)*f0*t8); notes.mi0e = mod8.*cos(2*pi*ScaleTable(23)*f0*t8); notes.fa0e = mod8.*cos(2*pi*ScaleTable(1)*f0*t8); notes.so0e = mod8.*cos(2*pi*ScaleTable(2)*f0*t8); 0e = mod8.*cos(2*pi*ScaleTable(3)*f0*t8); notes.ti0e = mod8.*cos(2*pi*ScaleTable(4)*f0*t8); notes.do1e = mod8.*cos(2*pi*ScaleTable(5)*f0*t8); notes.re1e = mod8.*cos(2*pi*ScaleTable(6)*f0*t8); notes.mi1e = mod8.*cos(2*pi*ScaleTable(7)*f0*t8); notes.fa1e = mod8.*cos(2*pi*ScaleTable(8)*f0*t8); notes.so1e = mod8.*cos(2*pi*ScaleTable(9)*f0*t8); 1e = mod8.*cos(2*pi*ScaleTable(10)*f0*t8); notes.tb1e = mod8.*cos(2*pi*ScaleTable(11)*f0*t8); notes.ti1e = mod8.*cos(2*pi*ScaleTable(12)*f0*t8); notes.do2e = mod8.*cos(2*pi*ScaleTable(13)*f0*t8); notes.re2e = mod8.*cos(2*pi*ScaleTable(14)*f0*t8); notes.mi2e = mod8.*cos(2*pi*ScaleTable(15)*f0*t8); notes.fa2e = mod8.*cos(2*pi*ScaleTable(16)*f0*t8); notes.so2e = mod8.*cos(2*pi*ScaleTable(17)*f0*t8); 2e = mod8.*cos(2*pi*ScaleTable(18)*f0*t8); notes.ti2e = mod8.*cos(2*pi*ScaleTable(19)*f0*t8); notes.do3e = mod8.*cos(2*pi*ScaleTable(20)*f0*t8); notes.blke = zeros(1,j);% 1/16 notesnotes.do0s = mod16.*cos(2*pi*ScaleTable(21)*f0*t16); notes.re0s = mod16.*cos(2*pi*ScaleTable(22)*f0*t16); notes.mi0s = mod16.*cos(2*pi*ScaleTable(23)*f0*t16); notes.fa0s = mod16.*cos(2*pi*ScaleTable(1)*f0*t16); notes.so0s = mod16.*cos(2*pi*ScaleTable(2)*f0*t16); 0s = mod16.*cos(2*pi*ScaleTable(3)*f0*t16); notes.ti0s = mod16.*cos(2*pi*ScaleTable(4)*f0*t16); notes.do1s = mod16.*cos(2*pi*ScaleTable(5)*f0*t16); notes.re1s = mod16.*cos(2*pi*ScaleTable(6)*f0*t16); notes.mi1s = mod16.*cos(2*pi*ScaleTable(7)*f0*t16); notes.fa1s = mod16.*cos(2*pi*ScaleTable(8)*f0*t16); notes.so1s = mod16.*cos(2*pi*ScaleTable(9)*f0*t16); 1s = mod16.*cos(2*pi*ScaleTable(10)*f0*t16); notes.tb1s = mod16.*cos(2*pi*ScaleTable(11)*f0*t16); notes.ti1s = mod16.*cos(2*pi*ScaleTable(12)*f0*t16); notes.do2s = mod16.*cos(2*pi*ScaleTable(13)*f0*t16); notes.re2s = mod16.*cos(2*pi*ScaleTable(14)*f0*t16); notes.mi2s = mod16.*cos(2*pi*ScaleTable(15)*f0*t16); notes.fa2s = mod16.*cos(2*pi*ScaleTable(16)*f0*t16); notes.so2s = mod16.*cos(2*pi*ScaleTable(17)*f0*t16); 2s = mod16.*cos(2*pi*ScaleTable(18)*f0*t16); notes.ti2s = mod16.*cos(2*pi*ScaleTable(19)*f0*t16); notes.do3s = mod16.*cos(2*pi*ScaleTable(20)*f0*t16); notes.blks = zeros(1,k);% Melody by Schau_malpart0={'mi1f' 'la0e' 'la0e' 'do1f' 'mi1f' ...'re1e' 're1s' 'mi1s' 're1e' 'do1e' 're1e' 'do1e' 'la0f' ...'mi1f' 'la0e' 'la0e' 'do1f' 'mi1f' ...'so1e' 're1s' 'mi1s' 're1e' 'do1e' 're1e' 'do1e' 'ti0e' 'so0e' ... 'mi1f' 'la0e' 'la0e' 'do1f' 'mi1f' ...'re1e' 're1s' 'mi1s' 're1e' 'do1e' 're1e' 'do1e' 'la0e' 'so0e' ... 'mi1f' 'la0e' 'la0e' 'do1f' 'mi1f' ...'so1e' 'mi1e' 'blkf' 'blkf' 'blkf' };part1={'la0f' 'la0e' 'so0e' 'la0f' 'la0e' 'do1e' ...'do1f' 're1e' 'do1e' 'la0f' 'la0f' ...'do1f' 'do1e' 'so0e' 'do1e' 're1e' 'mi1e' 'so1e' ...'so1e' 'mi1e' 're1f' 'mi1f' 'mi1f' ...'la1e' 'la1e' 'la1e' 'so1e' 'mi1e' 'mi1f' 'do1e' ...'la0e' 'la0e' 'la0e' 'mi1e' 're1s' 'mi1s' 're1e' 're1f' ...'mi1e' 'mi1e' 'so1e' 'mi1e' 're1e' 'mi1e' 're1e' 'do1e' ...'la0f' 'so0f' 'la0f' 'la0f' ...};part2={'mi1e' 'mi1e' 'so1e' 'mi1e' 'mi1e' 'so1e' 'so1e' 'la1e' ...'do2e' 'la1e' 'so1f' 'la1s' 'do2s' 'la1e' 'la1f' ...'la0f' 'la0e' 'so0e' 'la0f' 'do1f' ...'re1e' 'mi1s' 're1s' 'do1e' 're1e' 'mi1f' 'mi1f' ...'la0e' 'la1e' 'la1e' 'so1e' 're1e' 'mi1s' 're1s' 'do1e' 're1e' ...'mi1f' 'mi1f' 'blke' 'blke' 'blkf' ...'do1e' 'la0e' 'la0e' 'do1e' 're1f' 'so0e' 'so0e' ...'mi1e' 'so1e' 'mi1e' 're1e' 'do1f' 'do1f' ...'la0e' 'do1e' 're1e' 'mi1e' 're1e' 'do1e' 'so0e' 'mi0e' ...'la0f' 'la0f' 'blke' 'blke' 'blkf' ...};part3={'la0f' 'la0e' 'so0e' 'la0f' 'do1f' ...'re1e' 'mi1s' 're1s' 'do1e' 're1e' 'mi1f' 'mi1f' ...'la0e' 'la1e' 'la1e' 'so1e' 're1e' 'mi1s' 're1s' 'do1e' 're1e' ...'mi1f' 'mi1f' 'blke' 'blke' 'blkf' ...'do1e' 'la0e' 'la0e' 'do1e' 're1f' 'so0e' 'so0e' ...'mi1e' 'so1e' 'mi1e' 're1e' 'do1f' 'do1e' 'do1e' ...'la0e' 'do1e' 're1e' 'mi1e' 'so1e' 'mi1e' 'mi1e' 'so1e' ...'la1f' 'la1f' 'la1f' 'la1f' ...};part4={'la1e' 'la1s' 'la1s' 'la1e' 'la1e' 'la1e' 'la1s' 'so1s' 'mi1e' 're1e' ...'re1e' 're1s' 're1s' 'mi1e' 'mi1s' 'so1s' 'mi1e' 'mi1s' 're1s' 'do1e' 'do1s' 'la0s' ...'la0f' 'la0e' 'so0e' 'la0f' 'la0e' 'do1e' ...'re1e' 'mi1s' 're1s' 'do1e' 're1e' 'mi1f' 'mi1f' ...'la1e' 'so1e' 'mi1e' 're1e' 'so1e' 'mi1e' 're1e' 'do1e' ...'do1f' 'do1f' 'la0s' 'do1s' 're1s' 'mi1s' 're1s' 'do1s' 'la0s' 'do1s'};part5={'do2e' 'do2s' 'do2s' 'la1e' 'la1s' 'la1s' 'so1e' 'so1s' 'so1s' 'mi1e' 'mi1s' 'mi1s' ...'re1e' 'mi1s' 're1s' 'do1e' 'la0s' 'so0s' 'la0s' 'so0s' 'do1s' 're1s' 'mi1s' 'so1s' 'la1s' 're2s' ...'do2f' 'do2f' 'blks' 'blks' 'blks' 'blks' 'do1e' 're1e' ...'mi1f' 'mi1f' 'mi1f' 'so1e' 'mi1e' ...'la1f' 'la1f' 'la1e' 'do1e' 'so1e' 'mi1e' ...'re1f' 're1e' 're1s' 're1s' 're1e' 're1e' 'do1e' 're1e' ...'mi1f' 'mi1e' 'mi1s' 'mi1s' 'mi1e' 're1s' 'do1s' 'ti0e' 'do1s' 're1s' ...'mi1f' 'mi1f' 'mi1f' 'so1e' 'mi1e' ...'do2f' 'la1f' 'la1f' 'la1e' 'do1e' ...'re1f' 'so1f' 'so1f' 'la1f' ...'ti1f' 'ti1f' 'ti1f' 'ti1f' ...};part6={'blkf' 'blkf' 'mi1e' 'so1e' 'mi1e' 'so1e' ...'mi1f' 'la0e' 'la0s' 'la0s' 'do1f' 'la0e' 'mi1s' 'la0s' ...'do1e' 'do1s' 'do1s' 're1e' 'do1s' 're1s' 'mi1f' 'mi1f' ...'mi1f' 'la0e' 'la0s' 'la0s' 'so1f' 're1e' 're1s' 're1s' ...'mi1f' 'mi1f' 'mi1s' 're1s' 'do1s' 'la0s' 'mi0s' 're0s' 'mi0s' 'so0s' ...'do1f' 'la0e' 'la0s' 'la0s' 're1f' 'so0e' 'so0s' 'so0s' ...'mi0f' 'so0e' 'so0s' 'so0s' 'do1f' 'do1f' ...'la0f' 'do1e' 'do1s' 'la0s' 'mi1e' 'mi1s' 'mi1s' 're1e' 're1s' 'mi1s' ...};% Combination, v1 is complete version, v2 is simple version.v1 = [part0 part1 part1 part2 part3 part4 part0 part1 part1 part2 part3 part5 part3 part6 part3];%v2 = [part0 part1 part1 part2 part3 part5 part3 part6 part3];end到此这篇关于Matlab实现别踩⽩块⼩游戏的⽰例代码的⽂章就介绍到这了,更多相关Matlab别踩⽩块游戏内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
matlab小程序
Fibonacci数列f(1)=0;f(2)=1;for i=1:100f(i+2)=f(i)+f(i+1);i=i+1;if f(i)>4000&f(i)<5000disp('大于4000的Fibonacci数列的最小项为:');disp(f(i));disp('5000之内的项数为:')disp(i);endend猜数游戏x=floor(100*rand(1));for i=0:6y=input('请输入猜测数');if y>xdisp('High')else if y<xdisp('Low')else if y==xdisp('You won')endendendend成绩处理A=[78,89,64,73,68;83,77,80,78,70;82,91,78,82,68][x,y] =max(A');%每行的最大之以及列号disp('高数,外语,MATLAB三门课的最高分数分别为:');disp(x);disp('对应的学生序号为:');disp(y);a=sum(A) %列求和[x1,y1] =max(a');%每行的最大之以及列号disp('总分最高分为:');disp(x1);disp('对应的学生序号为:');disp(y1);A1=max(A)%将每一列元素最大值A1输出maxA=max(A1) %找出最大元素为矩阵里最大元素k=find(A==maxA)%得到最大元素线性坐标[row col]=ind2sub(size(A),k) %得到最大元素矩阵下标row-行col-列A=magic(4)% 每列的最大之以及行号[Y_col,Ind_col] =max(A)%每行的最大之以及列号[Y_row,Ind_row] =max(A')%最大值Ymax=max(max(A))A=magic(4)% 每列的最大之以及行号[X_col,Ind_row] =max(A)%每行的最大之以及列号[Y_row,Ind_row] =max(A')%最大值Ymax=max(max(A))求最大最小值for i=1:5a(i)=input('请输入您要显示数字的序号:');disp('您要显示的数字为:');disp(a(i));endmaxa=max(a);mina=min(a);maxamina。
matlab小程序
输入5个分数,小于60分的显示‘No pass!’,大于或等于60分显示‘Pass!’。
>> for i=1:5S=input('Enter the score')if S<60disp('No passed!')elsedisp('Passed!')endendEnter the score43S =43No passed!Enter the score55S =55No passed!Enter the score86S =86Passed!Enter the score84S =84Passed!Enter the score57S =57No passed! >> 99ans =99输入分数,大于90的显示‘Good!’,其余的显示‘Ok!’。
>> S=input('Enter the score')if S>90disp('Good!')elsedisp('Ok!')endEnter the score91S =91Good!>>求定积分sin24t txdt。
>> x=sym('x');t=sym('t');>> f=8*t*x;>> b=sin(t);>> Ix=int(f,x,2,b)Ix =- 4*t*cos(t)^2 - 12*t求微分方程dx/dt=6x-y,dy/dt=2x-y的通解。
>> [x,y]=dsolve('Dx=6*x-y','Dy=2*x-y','t')x =(7*C1*exp((5*t)/2 + (41^(1/2)*t)/2))/4 + (7*C2*exp((5*t)/2 - (41^(1/2)*t)/2))/4 + (41^(1/2)*C1*exp((5*t)/2 + (41^(1/2)*t)/2))/4 - (41^(1/2)*C2*exp((5*t)/2 - (41^(1/2)*t)/2))/4y =C1*exp((5*t)/2 + (41^(1/2)*t)/2) + C2*exp((5*t)/2 - (41^(1/2)*t)/2)绘制曲线y1=sinx,y2=x e。
matlab教程ppt(完整版)
矩阵减法:两个相同大小 的矩阵可以进行减法运算 ,例如D=A-B。
矩阵的分解与特征值
详细描述
矩阵分解:将一个复杂的矩阵分 解为几个简单的、易于处理的矩 阵,例如LU分解、QR分解等。
特征值:矩阵的特征值是该矩阵 的一个重要的数值属性,可以用 于分析矩阵的性质和特征。
矩阵运算
介绍矩阵的创建、索引、算术 运算和逻辑运算等操作。
控制流
介绍if语句、for循环和while 循环等控制流结构的使用方法 。
02
MATLAB编程
变量与数据类型
01
02
03
变量命名规则
MATLAB中的变量名以字 母开头,可以包含字母、 数字和下划线,但不能包 含空格。
数据类型
MATLAB支持多种数据类 型,如数值型、字符型、 逻辑型和单元数组等。
matlab教程PPT(完整版)
汇报人:可编辑 2023-12-26
目 录
• MATLAB基础 • MATLAB编程 • MATLAB矩阵运算 • MATLAB图像处理 • MATLAB数值分析 • MATLAB应用实例
01
MATLAB基础
MATLAB简介
MATLAB定义
MATLAB应用领域
MATLAB是一种用于算法开发、数据 可视化、数据分析和数值计算的编程 语言和环境。
函数编写
01
02
03
04
函数定义
使用`function`关键字定义函 数,指定输入输出参数。
函数体
在函数定义中编写实现特定功 能的代码。
函数调用
通过函数名和输入参数调用自 定义函数。
matlab经典的小程序
1.分段函数for x=-pi*6:pi/10:6*piy=sin(x);if y<0y=0;endfprintf('x=%f,y=%f\n',x,y);end2.计算距离x1=input('enter the x1:' );y1=input(’enter the y1:' );x2=input(’enter the x2:' );y2=input('enter the y2:’ );d=sqrt((x1—x2)。
^2+(y1—y2)。
^2);fprintf(’the distance of the two points is :%f’,d);v0=input('Enter the 初速度v0:');h0=input(’Enter the 离地高度h0:’);t=0:0。
01:53.重力加速度h=—0。
5*9。
81*t.^2+v0*t+h0;v=—9.81*t+v0;plot(t,h,'k-’,t,v,’b--’);title(' Plot of h(t)and v(t)’);xlabel('t’);ylabel(’h(t)andv(t)’);legend(’h(t)’,’v(t)’);4.坐标转换function [x, y] = polar2rect(r, theta)x = r * cos(theta * pi/180);y = r * sin(theta * pi/180);5。
坐标转换,带参数检验function [mag, angle] = polar_value(x, y)msg = nargchk(1,2,nargin);error(msg);% If the y argument is missing, set it to 0.if nargin 〈 2y = 0;end% Check for (0,0) input argument, and print out% a warning message.if x == 0 & y == 0msg = 'Both x and y are zero: angle is meaningless!'; warning(msg);end% Now calculate the magnitudemag = sqrt(x 。
利用Matlab编写简易版连连看小游戏
利⽤Matlab编写简易版连连看⼩游戏这是⼀款MATLAB连连看⼩游戏,基本实现了连连看的功能,不过⽬前没有写出死局判定的模块,⽇后可能会对其进⾏改进。
游戏截图游戏组装说明我们的变量path输⼊的是图像包的相对路径或绝对路径这⾥我们由于⽂件夹名称就叫“图⽚”所以直接path='图⽚’是没啥问题的。
⽂件夹⾥就是图⽚素材啦,其名称没有任何要求,形状最好是⽅的,不过不是的话问题也不⼤,程序会⾃动将其拉伸成⽅的。
我们这⾥要求的是读⼊jpg格式,想要png,jpg都读的话,。
最简单的就是直接读两次完整代码function ConnectingGame%连连看图⽚导⼊============================================================path='图⽚';picInformation=dir(fullfile(path,'*.jpg'));N=length(picInformation);for i=1:NpicList.(['pic',num2str(i)])=...imread([path,'\',picInformation(i).name]);end%全局变量==================================================================global selectedPos clickPosglobal redLinePntsglobal picMatselectedPos=[];redLinePnts=[];%图⽚矩阵⽣成==============================================================function createMat(~,~)tempMat=zeros(8,6);while any(any(tempMat==0))zeosPos=find(tempMat==0);temprand=rand(1,length(zeosPos));[~,tempSort]=sort(temprand);tempNum=zeosPos(tempSort(1:2));tempMat(tempNum)=randi(N);endpicMat=zeros(10,8);picMat(2:9,2:7)=tempMat;endcreateMat()%主要框架⽣成==============================================================MainFig=figure('units','pixels','position',[750 250 (9*100+10*5+20)*0.5 (7*100+8*5+20)*0.5],...'Numbertitle','off','menubar','none','resize','off',...'name','ConnectingGame | by slandarer');axes('parent',MainFig,'position',[0 0 1 1],...'XLim', [40 10*100+10*5-40],...'YLim', [40 8*100+8*5-40],...'color',[0.95,0.95,0.95],...'NextPlot','add',...'layer','bottom',...'Visible','on',...'YDir','reverse',...'XTick',[], ...'YTick',[]);uh1=uimenu('label','帮助');uimenu(uh1,'label','重新开始','callback',@restartGame)for i=2:9for j=2:7drawPicHdl(i,j)=image([(i-1)*100,i*100]+(i-1)*5,[(j-1)*100,j*100]+(j-1)*5,...picList.(['pic',num2str(picMat(i,j))]),'tag',[num2str(i),num2str(j)],...'ButtonDownFcn',@clickOnPic);endend%重新开始函数==============================================================function restartGame(~,~)createMat()for ii=2:9for jj=2:7set(drawPicHdl(ii,jj),'CData',picList.(['pic',num2str(picMat(ii,jj))]))endendend%主函数====================================================================function clickOnPic(object,~)redLinePnts=[];clickPos=[str2num(object.Tag(1)),str2num(object.Tag(2))];if isempty(selectedPos),selectedPos=clickPos;endif ~all(selectedPos==clickPos)%-------------------------------------------------------------------------------------------------condition1=0;condition2=0;switch 1case any(selectedPos(1)==clickPos(1))condition1=abs(selectedPos(2)-clickPos(2))==1;tempVector1=sort([selectedPos(2),clickPos(2)])+[1 -1];tempSum=sum(picMat(clickPos(1),tempVector1(1):tempVector1(2)));condition2=(tempSum==0)&~isempty(picMat(clickPos(1),tempVector1(1):tempVector1(2)));case any(selectedPos(2)==clickPos(2))condition1=abs(selectedPos(1)-clickPos(1))==1;tempVector1=sort([selectedPos(1),clickPos(1)])+[1 -1];tempSum=sum(picMat(tempVector1(1):tempVector1(2),clickPos(2)));condition2=(tempSum==0)&~isempty(picMat(clickPos(1),tempVector1(1):tempVector1(2)));endif (condition1||condition2)&&picMat(clickPos(1),clickPos(2))==picMat(selectedPos(1),selectedPos(2)) redLinePnts=[selectedPos;clickPos];end%-------------------------------------------------------------------------------------------------if isempty(redLinePnts)tempNode=[selectedPos(1),clickPos(2)];tempVector1=[selectedPos(2)+1,clickPos(2)].*(clickPos(2)>selectedPos(2))+...[clickPos(2),selectedPos(2)-1].*(clickPos(2)<=selectedPos(2));tempVector2=[selectedPos(1),clickPos(1)-1].*(clickPos(1)>selectedPos(1))+...[clickPos(1)+1,selectedPos(1)].*(clickPos(1)<=selectedPos(1));condition1=(sum(picMat(selectedPos(1),tempVector1(1):tempVector1(2)))==0);condition2=sum(picMat(tempVector2(1):tempVector2(2),clickPos(2)))==0;condition3=picMat(selectedPos(1),selectedPos(2))==picMat(clickPos(1),clickPos(2));if all([condition1,condition2,condition3])redLinePnts=[selectedPos;tempNode;clickPos];endendif isempty(redLinePnts)tempNode=[clickPos(1),selectedPos(2)];tempVector1=[clickPos(2)+1,selectedPos(2)].*(selectedPos(2)>clickPos(2))+...[selectedPos(2),clickPos(2)-1].*(selectedPos(2)<=clickPos(2));tempVector2=[clickPos(1),selectedPos(1)-1].*(selectedPos(1)>clickPos(1))+...[selectedPos(1)+1,clickPos(1)].*(selectedPos(1)<=clickPos(1));condition1=sum(picMat(clickPos(1),tempVector1(1):tempVector1(2)))==0;condition2=sum(picMat(tempVector2(1):tempVector2(2),selectedPos(2)))==0;condition3=picMat(selectedPos(1),selectedPos(2))==picMat(clickPos(1),clickPos(2));if all([condition1,condition2,condition3])redLinePnts=[selectedPos;tempNode;clickPos];endend%-------------------------------------------------------------------------------------------------if isempty(redLinePnts)for ii=[selectedPos(1):-1:1,selectedPos(1):10]tempNode1=[ii,selectedPos(2)];tempNode2=[ii,clickPos(2)];tempVector1=[selectedPos(1)+1,ii].*(ii>selectedPos(1))+[ii,selectedPos(1)-1].*(ii<=selectedPos(1));tempVector2=[clickPos(1)+1,ii].*(ii>clickPos(1))+[ii,clickPos(1)-1].*(ii<=clickPos(1));tempVector3=sort([selectedPos(2),clickPos(2)]);condition1=sum(picMat(tempVector1(1):tempVector1(2),selectedPos(2)))==0;condition2=sum(picMat(tempVector2(1):tempVector2(2),clickPos(2)))==0;condition3=sum(picMat(ii,tempVector3(1):tempVector3(2)))==0;condition4=picMat(selectedPos(1),selectedPos(2))==picMat(clickPos(1),clickPos(2));if all([condition1,condition2,condition3,condition4])redLinePnts=[selectedPos;tempNode1;tempNode2;clickPos];breakendendendif isempty(redLinePnts)for jj=[selectedPos(2):-1:1,selectedPos(2):8]tempNode1=[selectedPos(1),jj];tempNode2=[clickPos(1),jj];tempVector1=[selectedPos(2)+1,jj].*(jj>selectedPos(2))+[jj,selectedPos(2)-1].*(jj<=selectedPos(2));tempVector2=[clickPos(2)+1,jj].*(jj>clickPos(2))+[jj,clickPos(2)-1].*(jj<=clickPos(2));tempVector3=sort([selectedPos(1),clickPos(1)]);condition1=sum(picMat(selectedPos(1),tempVector1(1):tempVector1(2)))==0;condition2=sum(picMat(clickPos(1),tempVector2(1):tempVector2(2)))==0;condition3=sum(picMat(tempVector3(1):tempVector3(2),jj))==0;condition4=picMat(selectedPos(1),selectedPos(2))==picMat(clickPos(1),clickPos(2));if all([condition1,condition2,condition3,condition4])redLinePnts=[selectedPos;tempNode1;tempNode2;clickPos];breakendendend%-------------------------------------------------------------------------------------------------if ~isempty(redLinePnts)redLinePntsX=(redLinePnts(:,1)-1).*100+(redLinePnts(:,1)-1).*5+50;redLinePntsY=(redLinePnts(:,2)-1).*100+(redLinePnts(:,2)-1).*5+50;RedLine=plot(redLinePntsX,redLinePntsY,'Color',[1 0 0],'LineWidth',2.5);pause(0.3)delete(RedLine)picMat(selectedPos(1),selectedPos(2))=0;picMat(clickPos(1),clickPos(2))=0;set(drawPicHdl(selectedPos(1),selectedPos(2)),'CData',ones(100,100,3).*0.95);set(drawPicHdl(clickPos(1),clickPos(2)),'CData',ones(100,100,3).*0.95);selectedPos=[];elseselectedPos=clickPos;endendendend到此这篇关于利⽤Matlab编写简易版连连看⼩游戏的⽂章就介绍到这了,更多相关Matlab连连看游戏内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
求解湿球温度matlab小程序
d=0.622*RH*Psd/(P-RH*Psd);%干球温度条件下含湿量,kg/kg(dry air)
h=1.01*Td+(2500+1.84*Td)*d;%干球温度对应焓值,KJ/kg
fprintf('湿球含湿量是 %g kg/kg(dry air)\n',dw);
Tw=298.15;%假定一个湿球温度,K
hw=h;%湿球温度焓值=干球温度焓值
i=1;
Twk=Tw;
j=1;
whilehw-1.01*Tw)/(2500+1.84*Tw);%湿球温度条件下含湿量,kg/kg(dry air)
Psw=dw*P/(dw+0.622);%湿球温度对应的饱和蒸汽压力,Pa
%已知干球温度、相对湿度,求湿球温度
%该程序仅适用于常压、0-90℃范围内,通过迭代求得不是非常精确的湿球温度解
P=input('输入环境压力Pa:');%对应环境压力,Pa
Td=input('输入干球温度K:');%干球温度,K
RH=input('输入相对湿度(0-1):');%相对湿度,0-1
Twk=42.92+1687.54/(5.11564-log10(Psw*10^(-5)));%迭代出的新湿球温度,K
i=abs(Twk-Tw)/Tw;
j=j+1;
end
fprintf('湿球温度是 %g K\n',Tw);
fprintf('干球含湿量是 %g kg/kg(dry air)\n',d);
matlab文件数据格式化读写小程序设计
文件数据格式化读写一、实验目的通过编辑和运行简单的matlab数据读写程序,熟悉和掌握数据格式化输入输出方法。
二、实验内容:1、文件的打开与关闭1)创建标准的对话框并通过交互式操作取得文件名[FileName,PathName,FilterIndex]=uigetfile(FilterSpec,DialogTitle,Def aultName)FileName:返回的文件名PathName:返回的文件的路径名FilterIndex:选择的文件类型FilterSpec:文件类型设置DialogTitle:打开对话框的标题DefaultName:默认指向的文件名例:a.最简单的形式,只设置了一种可选择的文件类型[FileName,PathName] = uigetfile('*.m','Select the M-file');b.设置多种文件类型[filename, pathname] =uigetfile({'*.txt';'*.xls';'*.mat';'*.*'},'File Selector');c.所有文件类型[FileName,PathName] = uigetfile('*.*');d.路径文件名合并file = fullfile(pathname, filename)或者file = [pathname, filename]2)打开文件在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。
fopen函数的调用格式为:fid=fopen(文件名,‘打开方式’)说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。
文件名用字符串形式,表示待打开的数据文件。
常见的打开方式如下:‘r’:只读方式打开文件(默认的方式),该文件必须已存在。
matlab小程序
matlab小程序一基于均值生成函数时间序列预测算法程序1.predict_fun.m为主程序;2.timeseries.m和serie**pan.m为调用的子程序functionima_pre=predict_fun(b,step)%mainprograminvokestimeseries.mandserie**pan.m%u'w]7e&xj%inputparameters:%b-------thetrainingdata(vector);%g(r)]:m9h%i8r:w$z)[3x%step----numberofpredictiondata;%outputparameters:!o3h8u&i\%ima_pre---thepredictiondata(vector);8g5e$k\old_b=b;-_#]6k:l6i3m1m$?mean_b=sum(old_b)/length(old_b);std_b=std(old_b);old_b=(old_b-mean_b)/std_b;[f,x]=timeseries(old_b);old_f2=serie**pan(old_b,step);1n2t.{5h5q8s:a:g%f(f<0.0001&f>-0.0001)=f(f<0.0001&f>-0.0001)+eps;1f*w9o5c:c9tr=corrcoef(f); [eigvectoreigroot]=eig(r);eigroot=diag(eigroot);a=eigroot(end:-1:1);vector=eigvector(:,end:-1:1);$j6s$`\devote=a./sum(a);4z,gu*hhdevotem=cumsum(devote);m=find(devotem>=0. 995);m=m(1);6w(q8f/l-o5~#{:z1gv1=f*eigvector';\v=v1(:,1:m);%old_b=old_b;old_fai=inv(v'*v)*v'*old_b;eigvector=eigvector(1:m,1:m);fai=eigvector*old_fai;(w9f4e!a0c-f&g4^2df2=old_f2(:,1:m);predictvalue=f2*fai;ima_pre=std_b*predictvalue+mean_b;)}\1.子函数:timeseries.m1h3]:r:k+m.t)[,ep%timeseriesprogram%%thisprogramisusedtogeneratemeanvaluematrixf;1e2f2q+p(@function[f,x]=times eries(data)%data--------theinputsequence(vector);5|&l7c4t$a9c4b%f------meanvaluematrixf;n=length(data);forl=1:n/2nl=floor(n/l);fori=1sum=0;forj=1:nl8n&a3j!k#o%w4^6ksum=sum+data(i+(j-1)*l);end3n)h\x{l,i}=sum/nl;1o)ug-}0c2]:s7o;tend-z\end8g-a)q)r0?:d.c+z4q.el=n/2;(g)g't5e-}%s.w!pf=zeros(n,l);fori=1rep=floor(n/i);/]%e$h[0[8e$?\res=mod(n,i);*b&e3y(t5b;a+_%eb=[x{i,1:i}];b=b';8` %?)v,b&s(t)e.g'bf(1:rep*i,i)=repmat(b,rep,1);ifres~=0c=rep*i+1:n;%s9o-m&h%n2uf(rep*i+1:end,i)=b(1:length(c));$w+k5d.\\9~*meendend%serie**pan.m4y\%theprogramisusedtogeneratethepredictionmatrixf;8`${0c;q(w8|functionf=seri e**pan(data,step);#q8l7l3x$}#búta----theinputsequence(vector)%setp----thepredictionnumber;:?&c!z)s1bn=length(data);forl=1:n/2nl=floor(n/l);fori=1;r9a/d8y!m'b%]&^8z!j0osum=0;forj=1:nl#y;@0u!y7n8w+lsum=sum+data(i+(j-1)*l);endx{l,i}=sum/nl;end:o'h6v6@'@end9p;a;e2u!{1a0z8^,xl=n/2;*j)@h#{'~3u0tf=zeros(n+step,l);/w5b#k9e&o-o!@:n'd2j,lfori=1$|4x,a;i(w,c-yrep=floor((n+step)/i);res=mod(n+step,i);3w%f%}'t&x/{b=[x{i,1:i}];b=b';f(1:rep*i,i)=repmat(b,rep,1);9`$s3?9l.d&w:o'wifres~=0c=rep*i+1:n+step;f(rep*i+1:end,i)=b(1:length(c));endend+d!p#@&]8k4z二最短路dijkstra算法%dijkstraalgorithmcodeprogram%%theshortestpathlengthalgorithmfunction[path,short_distance]=shortpath_dijkstra(input_weight,start,endpoint)% inputparameters:.q#v,a$t.b)a3{$v&x,p(o%input_weight-------theinputnodeweight!%start--------thestartnodenumber;.a9c4|&r6w4k7q!`%endpoint------theendnodenumber;%outputparameters:/o4g,j)a\%path-----theshortestlenghtpathfromthestartnodetoendnode;%short_distance------thedistanceoftheshortestlenghtpathfromthe6y#d6a1r2e%startnodetoendnode.[row,col]=size(input_weight);7h2\\4yt8m\\%inputdetectionifrow~=col/f4c8s9j$q.r\error('inputmatrixisnotasquarematrix,inputerror');end'{!f*r3d8yifendpoint>row(c.i,\\-a-o#e0ferror('inputparameterendpointexceedthemaximalpointnumber');end6a(y2dm7h*m7wu4z 'f6n/|%p-u/\\%initializations_path=[start];distance=inf*ones(1,row);distance(start)=0;flag(start)=start;temp=start;8q&`5d %t9b5{-g(`9r5@'j)b\。
解三角形 matlab小程序
cleardisp('请先判断以下几个条件');disp('已知三边,请输入 1 ');disp('已知两边和其夹角,请输入 2 ');disp('已知两边和其中一边的对角,请输入 3 ');disp('已知两角和和另一角的对边,请输入4 ');disp('已知两角和和其中一角的对边,请输入5 ');disp('已知三个角,请输入6 ');disp('please输入题意所满足条件的数字');x=input('');while x==1disp('请输入第一条边a=? ');a=input('');disp('请输入第二条边b=? ');b=input('');disp('请输入第三条边c=? ');c=input('');if(a+b>c&&a+c>b&&b+c>a)A=(b*b+c*c-a*a)/2/b/c;A=acos(A);B=(a*a+c*c-b*b)/2/a/c;B=acos(B);C=(a*a+b*b-c*c)/2/a/b;C=acos(C);disp('角B=');disp(B);disp('角C=');disp(C);disp('角A=');disp(A);break;elseerrordlg('无法求出结果,不能构成三角形','name of the error window'); disp('无法求出结果,不能构成三角形');break;end;end;while x==2disp('请输入第一条边a=? ');a=input('');disp('请输入第二条边b=? ');b=input('');disp('请输入角(弧度)C=? ');C=input('');c=(a*a+b*b-2*a*b*cos(C))^0.5;A=(b*b+c*c-a*a)/2/b/c;A=acos(A);B=(a*a+c*c-b*b)/2/a/c;B=acos(B);if(a+b>c&&a+c>b&&b+c>a)disp('角B=');disp(B);disp('角A=');disp(A);disp('边长c=');disp(c);break;elseerrordlg('无法求出结果,不能构成三角形','name of the error window'); disp('无法求出结果,不能构成三角形');break;end;end;while x==3disp('请输入第一条边a=? ');a=input('');disp('请输入第二条边b=? ');b=input('');disp('请输入角(弧度)A=? ');A=input('');B=b*sin(A)/a;B=asin(B);C=pi-A-B;c=sin(C)*a/sin(A);disp('角B=');disp(B);disp('角C=');disp(C);disp('边长c=');disp(c);break;end;while x==4 disp('请输入一条边c=? ');c=input('');disp('请输入第一个角(弧度)B=? ');B=input('');disp('请输入第二个角(弧度)A=? ');A=input('');C=pi-B-A;b=c*sin(B)/sin(C);a=c*sin(A)/sin(C);disp('边长a=');disp(c);disp('边长b=');disp(b);disp('角C=');disp(C);break;end;while x==5disp('请输入一条边a=? ');a=input('');disp('请输入第一个角(弧度)B=? ');B=input('');disp('请输入第二个角(弧度)A=? ');A=input('');b=a*sin(B)/sin(A);C=pi-B-A;c=(a*a+b*b-2*a*b*cos(C))^0.5;disp('边长c=');disp(c);disp('边长b=');disp(b);disp('角C=');disp(C);break;end;while x==6errordlg('无法求出结果','name of the error window'); disp('无法求出结果');break;end;。
matlab小程序及其实验报告
Matlba期末作业实验报告一、实验目的:通过基本的矩阵运算、选择语句、循环语句的使用来实现矩阵运算的综合运算。
二、实验内容:1.利用Matlab中对于矩阵的基本运算命令,对矩阵进行基本运算;利用A'、rank()、inv()命令求矩阵的转置,矩阵的秩,逆矩阵。
2.利用Matlab中矩阵的分解来解线性方程组,还有系数矩阵还用增广矩阵的秩来确定线性方程组有没有唯一解;3.利用对于矩阵中的行列操作,对矩阵进行初等变换。
三、遇到的问题:在使用Matlab 进行编程是遇到相同语句,在不同版本中的不兼容问题。
如在Matlab中6.5 和7.0中换行可以使用“…”来进行换行操作。
但是在8.0中使用“…”在M文件进行换行则会报错。
在M文件中标准的换行使用“\n”命令来实现。
四、程序代码:n=input('请选择操作:\n1:矩阵的基本运算:\n2:为解线性方程组:\n3: 矩阵的初等变换:\n请输入选择序号:\n');switch ncase 1m=input('请选择操作:\n1为求矩阵的转置:\n2为求矩阵的秩:\n3为求矩阵的逆矩阵:');switch mcase 1A=input('请输入一个矩阵:');A'case 2A=input('请输入一个矩阵:');rank(A)case 3A=input('请输入一个矩阵:');inv(A)endcase 2A=input('请输入线性方程组的系数矩阵');a=rank(A);A1=input('请输入线性方程组的增广矩阵');b=rank(A1);if a==bB=input('请输入线性方程组的常数矩阵'); B=B';X=A\Belsedisp('线性方程组解不唯一');endcase 3A=input('请输入一个矩阵:\n')o=input('1:行变换\n2:列变换\n请输入选择:'); switch ocase 1h1=input('选择要进行运算的行:\n');h2=input('运算行;\n');I=A(h1,:);S=A(h2,:);x=input('行乘数:\n');A(h1,:)=A(h1,:)*x+A(h2,:)case 2l1=input('选择要进行运算的列:\n');l2=input('运算列;\n');I=A(:,l1);S=A(:,l2);x=input('列乘数:\n');A(:,l1)=A(:,l1)*x+A(:,l2)endend五、程序截图:求矩阵的转置求矩阵的秩求矩阵的逆矩阵求线性方程组的解矩阵的初等变换。
MATLAB 小程序
1、%图像纹理提取clearRGB=imread('E:\pic.jpg'); %读取E盘下pic.jpg图像文件[h l]=size(RGB(:,:,1));mart(h,l)=0;R=226;%设置通道值G=86;B=86;def=1;%设置置信区间for i=1:hfor j=1:lif((abs(RGB(i,j,1)-R)<def)&&(abs(RGB(i,j,2)-G)<def)& (i,j,1)*RGB(i,j,2)*RGB(i,j,3)>0))mart(i,j)=1;endendendimshow(mart)2、%FFT傅里叶变换clearx1(1:20)=1;x2(1:200)=0;x3(1:20)=0;x=[x1 x2 x3];X=fft(x);n=0:max(size(x))-1;stem(n,abs(X))grid on3、%动画制作clearn=20;for i=1:n;x=0:0.1:i;y=sin(x);plot(x,y)axis([0,20,-1.5,1.5]) %固定坐标轴M(i)=getframe; %抓取画面endmovie(M,3) %以电影方式播放3 次clearx=0:0.1:2*pi;y=sin(x);figureplot(x,y)h=line(0,0,'color','red','marker','.','markersize',30,'erasemode','xor'); %定义红色小球for i=1:length(x)set(h,'xdata',x(i),'ydata',y(i)); %设置小球新的位置pause(0.05) %暂停0.05 秒drawnow %刷新屏幕(前面有暂停,可以不要)end4、DTMF信号的产生和检测clear all;%-------------------DTMF信号的产生和检测--------------------%f1=[697 770 852 941];f2=[1209 1336 1447 1663];Fs=8000;%采样频率为8KHzpm=[49 50 51 65;52 53 54 66;55 56 57 67;42 48 35 68];%16个按键对应的ASCII码press=input('请输入一个有效键盘值(0——9,A——D,*,#):','s');%---------------在按键矩阵中对输入值进行查找---------------------%for p=1:4for q=1:4if press==pm(p,q)break;end %检测与输入按键值相符的列号qendif press==pm(p,q)break;end %检测与输入按键值相符的列号qendn=0:204;x=sin(2*pi*f1(p)*n/Fs)+sin(2*pi*f2(q)*n/Fs);%根据所确定的p,q产生DTMF信号subplot(2,1,1);plot(n,x);title('DTMF信号');xlabel('n');ylabel('x');%---------------DTMF信号的DFT变换-----------------%N=205;k=[18,20,22,24,31,34,38,42];%基频对应的DFT的8个k值,k=f*N/Fs,f为f1和f2的取值xgk=goertzel(x(1:N),k+1);subplot(2,1,2);stem(k,abs(xgk));title('DTMF信号的DFT');xlabel('k');ylabel('|xgk|');grid on;X=abs(xgk);limit=80;for s=1:8if X(s)>limit;break;endenddisp(['按键为:',setstr(pm(p,q))]);%setstr的作用是将各ASCII码转换为对应字符5、图像特征脸提取%————————主元分析clear all;clc;clf;mv=[-1 .5; -.5 .5; 0.2 0.1];x=dgen2([30 20],mv);%x一共有30+20个变量,每一行是一个变量%对于每个变量有两个观测值,一个是x坐标,一个是y坐标figure(1);plot(x(:,1),x(:,2),'o');[v,d]=eig(x'*x);%x'*x为协方差矩阵大小为2*2%求矩阵x'*x的全部特征值,构成对角阵d%并求x'*x的特征向量构成v(主元)的列向量y1=x*v(:,1)*v(:,1)';%x坐标映射后的数据集y2=x*v(:,2)*v(:,2)'; %y坐标映射后的数据集figure(1)plot(x(:,1),x(:,2),'o',y1(:,1),y1(:,2),'x',y2(:,1),y2(:,2),'*');title('对数据集的主元分析');%————————对一组人脸图像做PCA:T1=imread('1.jpg');T2=imread('2.jpg');T3=imread('3.jpg');T4=imread('4.jpg');T5=imread('5.jpg');[M,N]=size(T1);T=zeros(M*N,5);for i=1:Mfor j=1:NT((i-1)*N+j,1)=T1(i,j);T((i-1)*N+j,2)=T2(i,j);T((i-1)*N+j,3)=T3(i,j);T((i-1)*N+j,4)=T4(i,j);T((i-1)*N+j,5)=T5(i,j);endendT=double(T);[m, A, Eigenfaces] = EigenfaceCore(T);%得到特征脸Eigenfaces%显示特征脸Pm=2;%显示第Pm幅图irow=M;icol=N;eif=Eigenfaces(:,Pm);eif=reshape(eif,icol,[]);eif=eif';imT=T(:,Pm);imT=reshape(imT,icol,[]);imT=imT';figure(2)subplot(121);imshow(uint8(imT))title('图');subplot(122);imshow(uint8(eif));title('特征脸');function X=dgen2(Nvec,mean_var)[m,c]=size(mean_var);if m ~= 3 || c ~=length(Nvec),disp(' dimension not match, break ')endX=[];for i=1:c,randn('seed',sum(100*clock));tmp=sqrt(mean_var(3,i))*randn(Nvec(i),2);mean=mean_var(1:2,i); % mean 为2*1的向量X=[X;tmp+ones(Nvec(i),2)*diag(mean)];endendfunction [m, A, Eigenfaces] = EigenfaceCore(T)m = mean(T,2);Train_Number = size(T,2);A = [];for i = 1 : Train_Numbertemp = double(T(:,i)) - m;A = [A temp];endL = A'*A; %[V D] = eig(L);L_eig_vec = [];for i = 1 : size(V,2)if( D(i,i)>1 )L_eig_vec = [L_eig_vec V(:,i)];endendEigenfaces = A * L_eig_vec;end。
MATLAB角度换算小程序设计
U3=linspace(10,20,6);
3、 Matlab 编程与调试 1)编写命令文件:计算 1+2+…+n<2000 时的最大 n 值; 程序及运行结果如下:
>> clear; s=0;n=0; while s<2000 n=n+1;s=s+n;
-2-
end n-1 ans = 62
2)编写函数文件: (1 ) 分别用 for 和 while 循环结构编写函数 sum_of_num, 计算 2 的 0 到 15 次幂的和。 程序及运行结果如下:
2)矩阵除法 已知 A=[1 2 3;4 5 6;7 8 10]; 观察 A\B, A/B 的计算结果。 实验过程及解释:
>> A\B ans = -0.6667 -0.6667 1.0000 >> A/B ans = 1.0000 4.0000 7.0000 1.0000 2.5000 4.0000 1.0000 2.0000 3.3333 -2.6667 7.3333 -4.0000 3.0000 -6.0000 3.0000
MATLAB 角度换算程序 1、启动 MATLAB 软件,熟悉软件的界面和菜单 2、矩阵的运算 1)矩阵的乘法 已知 A=[1 2;3 4]; B=[5 4;3 2]; 观察 A.*B A*B A.^B A’的计算结果 实验过程及解释:
>> A.*B ans = 5 9 >> A*B ans = 11 27 ans = 1 27 >> A' ans = 1 2 3 4 16 16 %A 矩阵的转置 >> A.^B 8 20 %A,B 两个数组对应元素乘幂 8 8 %A,B 矩阵相乘 %A.*B 为 A,B 两个数组对应元素相乘
matlab自己写的小程序,让你跟熟悉
李根10级A 1041000181.用上三角计算行列式的值function [D]=fdet(A)%该函数把矩阵化成上三角,计算它的值[m,n]=size(A);if m~=nD='该矩阵不是方阵';return;endfor i=1:mif A(i,i)==0 %判断A(i,i)是否为0,为0就要交换for j=i+1 : mif A(j,i)~=0;temp=A(i,:);A(i,:)=A(j,:);A(j,:)=temp;break;endendendfor k=i+1 : mif A(k,i)~=0A(k,:)=A(k,:)-A(k,i)/A(i,i)*A(i,:); %把该列的第i个元素下面都化成0endendendD=1;for i=1:mD=D*A(i,i);enddisp(D);2.该程序实现抽奖功能function aword( )%该函数实现福彩3D 和双色球摇奖功能a=fix(10*rand());b=fix(10*rand());c=fix(10*rand());disp(['3D中奖号码为:',int2str(a),int2str(b),int2str(c)]);tmpflag=0;x(1)=fix(32*rand()+1);x(2)=fix(32*rand()+1); %防止出现相同的号码,双色球中无相同的红球,以下if x(2)==x(1)tmpflag=1;while tmpflag==1;x(2)=fix(32*rand()+1);if x(2)~=x(1)tmpflag=0;endendendx(3)=fix(32*rand()+1);if x(3)==x(2) || x(3)==x(1)tmpflag=1;while tmpflag==1;x(3)=fix(32*rand()+1);if x(3)~=x(1) & x(3)~=x(2)tmpflag=0;endendendx(4)=fix(32*rand()+1);if x(4)==x(3) | x(4)==x(2) |x(4)==x(1)tmpflag=1;while tmpflag==1;x(2)=fix(32*rand()+1);if x(4)~=x(3) & x(4)~=x(2) &x(4)~=x(1)tmpflag=0;endendendx(5)=fix(32*rand()+1);if x(5)==x(4) | x(5)==x(3)| x(5)==x(2) | x(5)==x(1)tmpflag=1;while tmpflag==1;x(2)=fix(32*rand()+1);if x(5)~=x(4) & x(5)~=x(3)& x(5)~=x(2) & x(5)~=x(1)tmpflag=0;endendendx(6)=fix(32*rand()+1);if x(6)==x(5) | x(6)==x(4)| x(6)==x(3) | x(6)==x(2) | x(6)==x(1)tmpflag=1;while tmpflag==1;x(2)=fix(32*rand()+1);if x(6)~=x(5) & x(6)~=x(4)& x(6)~=x(3) & x(6)~=x(2) & x(6)~=x(1)tmpflag=0;endendendd=fix(16*rand());disp(['双色球中奖号码:',int2str(x(1)),'+',int2str(x(2)),'+',int2str(x(3)),'+',int2str(x(4)),'+',int2str(x(5)),'+',int 2str(x(6)),'+','蓝球',int2str(d)]);end3.该函数用来出+ - * /题,考察小学生,并计算作对的题目function hl()%随机出小学加减乘除的题考查小学生的计算能力disp('该函数用来出10道题!');%如想出多少道可以改while的上界值count=0;i=1;while i<=10a=fix(rand()*100);b=fix(rand()*100);c=fix(rand()*3+1);switch ccase 1fprintf('%d+%d=',a,b);t1=input(' ');if (a+b)==t1fprintf(' √\n');count=count+1;elsefprintf(' ×\n');endcase 2if a<bt=a;a=b;b=t;endfprintf('%d-%d=',a,b);t1=input(' ');if (a-b)==t1fprintf(' √\n');count=count+1;elsefprintf(' ×\n');endcase 3fprintf('%d*%d=',a,b);t1=input(' ');if (a*b)==t1fprintf(' √\n');count=count+1;elsefprintf(' ×\n');endcase 4if b==0b=fit(rand()*99+1);endfprintf('%d÷%d=',a,b);t1=input(' ');if (a/b)==t1fprintf(' √\n');count=count+1;elsefprintf(' ×\n');endendi=i+1;endfprintf('你作对了%d道题!',count);4.该函数用来求矩阵的逆矩阵function [B]=finv(A)%该函数用来求矩阵的逆矩阵[m,n]=size(A);if m~=ndisp('该矩阵不是方阵!');return;endif det(A)==0disp('该矩阵没有逆矩阵!');return;endW=eye(m);T=[A W];disp(T);for i=1:mif T(i,i)==0 %判断A(i,i)是否为0,为0就要交换for j=i+1 : mif T(j,i)~=0;temp=T(i,:);T(i,:)=T(j,:);T(j,:)=temp;break;endendendfor k=i+1 : mif T(k,i)~=0T(k,:)=T(k,:)-T(k,i)/T(i,i)*T(i,:); %把该列的第i个元素下面都化成0endendenddisp(T);for i=i:mif T(i,i)~=0T(i,:)=T(i,:)/T(i,i);endendfor i=m:-1:1if T(i,i)~=0for j=i-1:-1:1T(j,:)=T(j,:)-T(j,i)*T(i,:)endendendB=T(:,m+1:end);disp(B);5.该函数用来查找任一矩阵中的元素function [B]=fsort(A,key)%实现快速查找,在数组中找到该元素[m,n]=size(A);flag=0;for i=1:mfor j=1:nif key==A(i,j)B=[i,j];disp(['在第',int2str(i),'行','第',int2str(i),'列!']);flag=1;returnendendendif flag==0disp('该数不在数组中!');endend6.该函数用来统计学生信息,做成表格一样方便浏览function tcu()%该函数用来统计学生信息n=0;flag=1;disp('以下都为字符串,请用'’',你要统计几个学生的成绩:');h=input('');while flag==1n=n+1;if n==hflag=0;endfprintf('请输入学号:');student(n).no=input('');fprintf('请输入姓名:');student(n).name=input('');fprintf('请输入性别:');student(n).sex=input('');fprintf('请输入电话号码:');student(n).tel=input('');endfprintf('学号姓名性别电话号码\t\n'); for i=1:nfprintf('%s %s %s %s \n', student(i).no, student(i).name, student(i).sex, student(i).tel);end7.该函数用来训练结构体嵌套function pjz()%输入学生的姓名和三科成绩,主要用结构体嵌套disp('退出请在姓名处输入$!')i=0;flag=1;while flag==1i=i+1;fprintf('请输入姓名:');student(i).name= input('');if getfield(student,{i},'name')=='$'break;endfprintf('请输入语文成绩:');student(i).score.chi=input('');fprintf('请输入数学成绩:');student(i).score.num= input('');fprintf('请输入英语成绩:');student(i).score.eng=input('');student(i).score.pjf=(student(i).score.num+student(i).score.chi+student(i).score.eng)/3;endt=i;fprintf('姓名数学语文英语平均分\n');for i=1:t-1fprintf('%s %d %d %d %d \n', student(i).name,student(i).score.num,student(i).score.chi,student(i).score.eng,student(i).score.pjf); end。
MATLAB常用小程序6-多段线性拟合
MATLAB常用小程序6-多段线性拟合function Fitmultistepclcclear allclose allx=[0 1 2 3 4 5 6 7 8 9];y=[1 5 8 9 10 14 12 14 11 9]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%p1=polyfit(x(1:3),y(1:3),1); %第一段拟合,输出一次拟合曲线的多项式系数并赋值给向量p1p2=polyfit(x(3:6),y(3:6),1); %第二段拟合,输出一次拟合曲线的多项式系数并赋值给向量p2p3=polyfit(x(6:end),y(6:end),1); %第三段拟合,输出一次拟合曲线的多项式系数并赋值给向量p3Y1=vpa(poly2sym(p1,'X'),5) %第一段拟合X1的系数保留五位有效数字,并输出Y1对X1函数关系式Y2=vpa(poly2sym(p2,'X'),5) %第二段拟合X2的系数保留五位有效数字,并输出Y2对X2函数关系式Y3=vpa(poly2sym(p3,'X'),5) %第三段拟合X3的系数保留五位有效数字,并输出Y3对X3函数关系式%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%x1=min(x(1:3)):0.1:max(x(1:3)); %输入第一段拟合点的横坐标值,并赋值给向量x1x2=min(x(3:6)):0.1:max(x(3:6)); %输入第二段拟合点的横坐标值,并赋值给向量x2x3=min(x(6:end)):0.1:max(x(6:end)); %输入第三段拟合点的横坐标值,并赋值给向量x3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%y1=polyval(p1,x1); %计算第一段拟合点的纵坐标值,并赋值给向量y1y2=polyval(p2,x2); %计算第二段拟合点的纵坐标值,并赋值给向量y2y3=polyval(p3,x3); %计算第三段拟合点的纵坐标值,并赋值给向量y3 figure(1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%plot(x,y,'k.','Markersize',15)hold onplot(x1,y1,'r-','linewidth',1.5)hold onplot(x2,y2,'b-','linewidth',1.5)hold onplot(x3,y3,'g-','linewidth',1.5)hold ongrid on %给绘图窗口添加网格xlabel('x'); %横坐标轴命名为xylabel('y'); %纵坐标轴命名为y %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[教学]MATLAB小程序MATLAB小程序1-1.1 描绘出“点”%密度和穗花被害率x=[0,3,10,20,30,40];y1=[0,0.273,2.260,2.550,2.920,3.950];subplot(2,2,1);plot(x,y1);title(' 密度和穗花被害率');xIabelC 头肝八2');ylabel(' 穗花被害率%');%密度和结实率x=[0,3,10,20,30,40];y2=[94.4,93.2,92.1,91.5,89.9,87.9];subplot(2,2,2);plot(x,y2);title(' 密度和结实率');xIabelC 头/m^2');ylabel(' 结实率%');%密度和千粒重x=[0,3,10,20,30,40];y3=[21.37,20.60,20.60,20.50,20.60,20.13];subplot(2,2,3);xIabelC 头/mV);ylabel(' 千重粒g');%密度和减产率x=[0,3,10,20,30,40];y4=[0,2.4,12.9,16.3,20.1,26.8];subplot(2,2,4);plot(x,y4);title(' 密度和减产率');xlabel(' 头/mV);ylabel(' 减产率%')%1-1.2 表2 稻纵卷叶螟与水稻作用的数据%产量损失率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112. 50];y1=[0.73,1.11,2.2,3.37,5.05,6.78,7.16,9.39,14.11,20.06]; subplot(2,2,1);plot(x,y1);title(' 密度和减产率');xIabelC 头/m^2');ylabel(' 减产率%');%卷叶率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112. 50];y2=[0.76,1.11,2.22,3.54,4.72,6.73,7.63,14.82,14.93,20.40]; subplot(2,2,2);xIabelC 头肝八2');ylabel(' 卷叶率%');%空壳率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112. 50];y3=[14.22,14.43,15.34,15.59,16.87,17.10,17.21,20.59,23.19,2 5.16];subplot(2,2,3);plot(x,y3);title(' 密度和减产率');xIabelC 头/m^2');ylabel(' 空壳率%');%进行曲线拟合%密度和穗花被害率x=[0,3,10,20,30,40];y1=[0,0.273,2.260,2.550,2.920,3.950];subplot(2,2,1);p=polyfit(x,y1,4) x=linspace(0,40,40);y=polyval(p,x);plot(x,y);title(' 密度和穗花被害率');xIabelC 头肝八2');ylabel(' 结实率%');%密度和结实率x=[0,3,10,20,30,40];y2=[94.4,93.2,92.1,91.5,89.9,87.9]; subplot(2,2,2);p=polyfit(x,y2,4) x=linspace(0,40,40);y2=polyval(p,x);plot(x,y2);title(' 密度和结实率');xIabelC 头/mV);ylabel(' 结实率%');%密度和千粒重x=[0,3,10,20,30,40];y3=[21.37,20.60,20.60,20.50,20.60,20.13]; subplot(2,2,3);p=polyfit(x,y3,4)x=linspace(0,30,30);y3=polyval(p,x);plot(x,y3);title(' 密度和千粒重');xIabelC 头肝八2');ylabel(' 千重粒g');%密度和减产率x=[0,3,10,20,30,40];y4=[0,2.4,12.9,16.3,20.1,26.8];subplot(2,2,4);p=polyfit(x,y4,4) x=linspace(0,40,40);y4=polyval(p,x)plot(x,y4);title(' 密度和减产率');xlabel(' 头/mV);ylabel(' 减产率%')%1-1.2 表2 稻纵卷叶螟与水稻作用的数据%产量损失率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112.50]; y1=[0.73,1.11,2.2,3.37,5.05,6.78,7.16,9.39,14.11,20.06]; subplot(2,2,1);plot(x,y1);title(' 产量损失率');xIabelC 头/mV);ylabel(' 减产率%');%卷叶率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112.50];y2=[0.76,1.11,2.22,3.54,4.72,6.73,7.63,14.82,14.93,20.40]; subplot(2,2,2);plot(x,y2);title(' 卷叶率');xIabelC 头肝八2');ylabel(' 卷叶率%');%空壳率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112.50];y3=[14.22,14.43,15.34,15.59,16.87,17.10,17.21,20.59,23.19,25.16]; subplot(2,2,3);plot(x,y3);title(' 空壳率');xlabel(' 头/mV);ylabel(' 空壳率%')%1-1.2 表2 稻纵卷叶螟与水稻作用的数据%产量损失率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112.50];y1=[0.73,1.11,2.2,3.37,5.05,6.78,7.16,9.39,14.11,20.06];subplot(2,2,1);title(' 产量损失率');xIabelC 头肝八2');ylabel(' 减产率%');%卷叶率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112.50];y2=[0.76,1.11,2.22,3.54,4.72,6.73,7.63,14.82,14.93,20.40];p=polyfit(x,y1,4)x=linspace(0,115,30);y=polyval(p,x);plot(x,y);subplot(2,2,2);p=polyfit(x,y2,4) x=linspace(0,115,30);y=polyval(p,x);plot(x,y) title(' 卷叶率');xIabelC 头/mV);ylabel(' 卷叶率%');%空壳率:x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112. 50];y3=[14.22,14.43,15.34,15.59,16.87,17.10,17.21,20.59,23.19,2 5.16];subplot(2,2,3);p=polyfit(x,y1,4)x=linspace(0,115,30);y=polyval(p,x);plot(x,y);title(' 空壳率');xIabelC 头肝八2');ylabel(' 空壳率%')题 1.3 代码%x为臭氧持续作用时间,y为病虫害经臭氧处理时的剩余数量比例,%z%臭氧喷嘴出口处检测到的臭氧浓度x=[0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5];y=[93,89,64,35,30,25,18,10,0,0,0];z=[0.15,0.40,0.75,1.00,1.25,1.50,1.80,2.10,2.25,2.65,2.85]; plot3(x,y,z,'m');text(0,0,0,'origin');xlabel(' 小时'),ylabel(' 病虫剩余数量比例%'),zlabel(' 臭氧喷嘴出口处检测到的臭氧浓度'),grid;title(' 臭氧浓度与真菌作用');进行曲线拟合%x为臭氧持续作用时间,y为病虫害经臭氧处理时的剩余数量比例,%z%臭氧喷嘴出口处检测到的臭氧浓度x=[0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5,10.5];y=[93,89,64,35,30,25,18,10,0,0,0];z=[0.15,0.40,0.75,1.00,1.25,1.50,1.80,2.10,2.25,2.65,2.85];p=polyfit(x,y,z,4) x=linspace(0,115,30);y=polyval(p,x);plot(x,y);text(0,0,0,'origin');xlabel(' 小时'),ylabel(' 病虫剩余数量比例%'),zlabel(' 臭氧喷嘴出口处检测到的臭氧浓度'), grid;title(' 臭氧浓度与真菌作用');。