您当前的位置: 首页 >  matlab

整理记录matlab令人迷惑(或有用)的操作 不定期更新

发布时间:2020-01-25 09:21:37 ,浏览量:6

2.if转switch

巧用逻辑运算

score=68 switch 1 case 90<=score&&score<=100,disp('优秀'); case 70<=score&&score<90,disp('良好'); case 60<=score&&score<70,disp('一般'); case score<60,disp('不及格'); end
3.生成随机初级扫雷矩阵
rand_mat=rand(9,9); [~,order]=sort(rand_mat(:)); mine=zeros(9,9); mine(order(1:10))=1; 
4.删除矩阵中含有元素0的行
A=[2 3 4 0;3 6 2 6;1 2 0 4;3 4 9 1]; A(sum(A(:,:)==0,2)~=0,:)=[] %同理删除含有元素0的列: %A(:,sum(A(:,:)==0,1)~=0)=[] 
5.当timer和while做的小动画未进行完要优雅的从右上角关闭
set(gcf,'tag','co','CloseRequestFcn',@clo); function clo(~,~) stop(game) delete(findobj('tag','co')); clf
        close
    end %注:其中的stop(game)中的game是timer函数构造的实例名称。
6.删除图像
delete(findobj('type','line'))%删除类似于plot的线性图像 deletd(findobj('type','patch'))%删除类似于fill的填充图像 %当你只想删除部分图像时,不妨给他们加个'tag' %例如plot(x,y,'tag','plotline') % delete(findobj('tag','plotline')); 
7.matlab拟合函数后转换成匿名函数
x=[2 2.5 3 3.5 4 4.5 5 5.5 6]; y=[41 38 34 32 29 28 25 22 20]; p=polyfit(x,y,3) f=matlabFunction(poly2sym(p)) 
8.隐藏图像边框
set(gca,'xtick',[],'ytick',[],'xcolor','w','ycolor','w') 
9.获取鼠标在figure上位置
set(gcf,'WindowButtonMotionFcn',@getpos) function getpos(~,~) xy=get(gca,'CurrentPoint'); x=xy(1,1);y=xy(1,2); end
10.黑白子轮流下棋?
turn=0 while 条件
    turn=mod(turn+1,2); switch turn case: 1,下黑子; case: 0,下白子; end
end
11.获取矩阵各行或各列最大值
A=[1 2 4;4 5 6;7 8 9]; max_A_rows=max(A,[],2) max_A_cols=max(A,[],1) 
12.构造0xn大小的矩阵,用于初始化矩阵
mat=ones(1,n); mat(1,:)=[]; %这样的初始化矩阵可以直接往后面并上新的元素
13. 删除矩阵中不存在元素或无限大元素
mat1=[nan,4,5]; mat1(isnan(mat1))=[]; mat2=[inf,6,7]; mat2(isinf(mat2))=[]; 
14.设置默认值
function example(arg1,arg2,arg3) if nargin<2 arg2=''; end if nargin<3 arg3=''; end
end
15.利用严密逻辑在matlab内无法关闭的图像(可用任务进程管理器关掉
function bug set(gcf,'tag','co','CloseRequestFcn',@draw) function draw(~,~) spy
    end draw() end
16.能看懂就怪了的万年历(a,b,c分别为年月日)
function y=wannianli(a,b,c) yue=[1 0 0;2 31 31;3 59 60;4 90 91;5 120 121;6 151 152;7 181 182;8 212 213;9 243 244;10 273 274;11 304 305;12 334 335]; y=mod(((a-1)*365+floor((a-1)/4)-floor((a-1)/100)+floor((a-1)/400)+yue(yue(:,1)==b,3-((~mod(a,4)==0)||((mod(a,100)==0)&&(~mod(a,400)==0))))+c+7),7); end
17.复数矩阵转置
a=a(:).' %来源:https://www.cnblogs.com/hgyzm/p/10298100.html
18.已知邻接矩阵求可达矩阵
function P=dgraf(A) n=size(A,1); P=A; for i=2:n P=P+A^i; end P(P~=0)=1; end %来源:《图论算法及matlab实现》 % 北京航空航天大学出版社
19.没啥用的程序
function nothing=nothing(nothing),end
20.确定点击图像的序号

如果图像是用image创建,则可以为其设置’ButtonDownFcn’,并设置一个回调,如:@clickOnPic

PicHdl(i)=image([xMin xMax],[yMin yMax],picName,'tag',num2str(i),'ButtonDownFcn',@clickOnPic); 

然后为clickOnPic第一个输入命名为object并获得其Tag值

function clickOnPic(object,~) picId=object.Tag; end

详细使用可见我写的连连看程序或植物大战僵尸程序。

21.神奇的图像

超超超级短,超超超神奇,好久之前知乎上看到的,出处有些难找

mat=eye(40); plot(fft(mat)); axis equal

在这里插入图片描述

22.RGB颜色与十六进制色相互转换

RGB颜色–>十六进制色

function string=ten2sixteen(num) %the num should be a 1x3 Integer mat limited in [0 255] exchange_list={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; string='#'; for ii=1:3 temp_num=num(ii); string(1+ii*2-1)=exchange_list{(temp_num-mod(temp_num,16))/16+1}; string(1+ii*2)=exchange_list{mod(temp_num,16)+1}; end
        end

十六进制色–>RGB颜色

function num=sixteen2ten(string) exchange_list='0123456789ABCDEF#'; ismember(string,exchange_list) num=zeros(1,3); if all(ismember(string,exchange_list)) for ii=1:3 tempCoe1=find(ismember(exchange_list,string(ii*2))==1)-1; tempCoe2=find(ismember(exchange_list,string(ii*2+1))==1)-1; num(ii)=16*tempCoe1+tempCoe2; end else num=nan; end
        end
关注
打赏
1688896170
查看更多评论

暂无认证

  • 6浏览

    0关注

    115984博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0433s