一、M文件

1、脚本文件

(1)英文字母开头命名

(2)所产生的所有变量驻留在base workspace,只要不用clear,就只有关闭MATLAB,才会被删除

2、函数文件

(1)function

(2)函数调用完毕,function workspace删除

二、MATLAB程序流控制与调试

1、MATLAB程序流控制(几乎同C)

(1)if-else-end

(2)switch-case-otherwise-end

(3)for

>> for ix=[  ;  ;  ]
a=ix,
end

  打印列循环

(4)while

(5)try-catch

(6)continue,break,pause,return

2、MATLAB程序调试

(1)运行错误:

    a.将可能出错语句后面的;去掉

    b.如果是一个函数文件,注释function所在行,使其变成脚本文件,便于在命令窗口查看运行结果

    c.clear  、 clear all清除以前的运行结果

    d.keyboard 增加交互性

(2)断点设置方法(3‘):

    a.’-‘点击后变红

    b.放光标,F12

    c.dbstop

三、示例

问题: 

   一只失明的小猫不幸掉进山洞里。山洞有三个门。其中第一个门进去后走2小时可以回到地面;第二个门进去后走4小时回到原点;第三个门进去后走6小时回到原点;.小猫由于失明,每次随机选择一个门。问题是:小猫走出山洞的期望时间?

分析:设期望时间为 t

   t = 2*(1/3)+(4+t)*(1/3)+(6+t)*(1/3)

   t = 12

思路(MATLAB):

  输入正整数 n 为小猫出洞次数,生成一个 1*n 的数组 T 用来记录每次出洞时间,初始值为0;k 从 1 循环到 n ,T(k) 用来记录每次实际出洞时间;随机等概率生成{1,2,3} 中的一个数 c 。

  c = 1 , T(k) = T(k) + 2 ,小猫出洞,开始下一次模拟(就是上地面上来了,结束掉了)

  c = 2 , T(k) = T(k) + 4

  c = 3 , T(k) = T(k) + 6 , 直到 c = 1 为止

  n 次模拟之后,计算平均值求近似......

求解:

function T =cat_in_holl(varargin)
%varargin,是函数可以接受参数个数不定的输入
if ~isempty(varargin)%输入参数非空
n=varargin{};%varargi为cell型数组,取其第一个元素赋值给n
end
%try-catch结构用法示例
try
%如果n是正整数,下面的语句不会发生错误,进而执行结构之后的语句
%否则会发生错误,执行catch引导的语句
if n>&&mod(n,)==;%n为正整数
%空语句,不会报错
else
error;
end
catch ME %yongNE来记录发生错误的一些信息
disp('函数没有输入参数或者输入的参数不是正整数标量');
T=[];%geiT赋空值
return;%函数后面语句不再执行
end %switch-case-end
switch nargin %函数输入参数个数
case
T=zeros(,n);
for k=:n;
c=unidrnd(,);
while c~=
if c==
T(k)=T(k)+;
else
T(k)=T(k)+;
end
c=unidrnd(,);
end
T(k)=T(k)+;
end
case
T=[];
disp('函数只能有一个输入参数,且为正整数');
otherwise
T=[];
disp('函数输入的参数个数不能大于1,,且为正整数');
end
>> n=1e4;
>> T=cat_in_holl(n);
>> mean(T)
ans =
11.8704
>> T=cat_in_holl(n);
>> mean(T)
ans =
11.8860

n越大, 越接近

四、匿名函数、子函数、嵌套函数

1、匿名函数:

fhandle=@(arglist)expr

fhandle:句柄

arglist:自变量

expr:表达式

2、子函数:

  在同一函数文件中,主函数之后由 “function” 引导的函数,小心死循环

3、嵌套函数:

  (1)开始以 function 声明,结尾+ end

  (2)嵌套函数访问父函数的变量,可以在函数定义里直接拿过来用;父函数访问嵌套在其内的函数里的变量,必须调用

  (3)彼此没有关系的嵌套函数间不能共享变量,只能通过父函数

  (4)父函数只能调用嵌套在其中的第一重嵌套函数;但无论第几重嵌套函数,都可以调用其父函数,或其父函数的父函数

  (5)总个小结:

    父子可以相互求助;不能求助后代,可以求助直系祖宗,及其直系祖宗是亲兄弟的先人;可以求助自己的亲兄弟或者亲叔伯,不能求助侄子

五、四的应用示例

1、匿名函数:

>> f=@(a)@(x)exp(x)+x^a+x^(sqrt(x))-;
>> format long
>> aa=:0.01:;
>> plot(aa,arrayfun(@(a)fzero(f(a),),aa),'b-');
>> xlabel('$a$','Interpreter','latex','FontSize',);
>> ylabel('$x$','Interpreter','latex','FontSize',);
>> title('$\mathrm{e}^{x} + x^{\sqrt{x}} + x^a - 100$','Interpreter','latex','FontSize',);

显示隐函数:

(ey+xy)1/y-x2y=0

>> y=@(x)fzero(@(y)(exp(y)+x^y)^(/y)-x^*y,);

求积分区域:

sin2x/x2的积分值为0.99pi,求其关于0对称的积分区域

>> u0=fzero(@(u)0.99*pi/ - quadl(@(x)sin(x).^./(x.^),,u),)
u0 =
32.313810358217296

2、子函数,嵌套函数:

(1)积分上限

(2)gui:

%三角形
function triangle_table
%生成界面,默认控件属性为'normalized',即随界面大小而变化
%figure的编号去掉,不显示菜单项
fig=figure('defaultuicontrolunits','normalized','name','triangle_table',...
'numbertitle','off','menubar','none');
%建立坐标轴,但是不显示
ah=axes('Pos',[0.1,0.2,0.75,0.75],'visible','off');
%建立滚动条,回调函数为change_color
slider_h=uicontrol('style','slider','units','normalized','pos',...
[0.1,0.05,0.75,0.05],'sliderstep',[/,0.05],'callback',@change_color);
%画网格并填好数字
hold on
for k=:
plot(:-k,(-k)*ones(,(-k)),'k');
plot(k*ones(,(-k)),k:,'k');
end
plot([,],[,],'k');
hold off;
for x=:
for y=:x
text(y-0.5,x+0.5,num2str(x),'color','k','tag','number');
end
end
for k=:
text(k+0.1,k+0.5,[num2str(k),'.5'],'tag','number');
end
%============滚动条的回调函数================
function change_color(hobject,eventdata)
v=round(*get(slider_h,'value'));
num_h=findobj('tag','number');
num_pos=get(num_h,'pos');
red_num_logic=cellfun(@(x)(x()<=v && x()<=v),mun_pos);
set(num_h(red_num_logic),'color','r');
set(num_h(~red_num_logic),'color','k');
end
end

有点问题。。。

matlab程序设计的更多相关文章

  1. Matlab——程序设计

    M文件 我们之前所做的运算————> 算式不太长,或想以交谈式方式进行运算 如果算式很长或是需要一再执行的算式————> 采用M文件的方式 [将指令及算式写成巨集程式然后储存成一个特别的文 ...

  2. 史上最全的Matlab资源电子书教程和视频下载合集【超级推荐】

    收藏吧,网上搜集的,费了老大劲了,推荐给有需要的人,^_^.   MATLAB课件2007北京交通大学.zip 4.87 MB   A Guide to MATLAB for Beginners an ...

  3. Matlab 基础

    命令行(Command Line) 1. help  格式:help  命令 2. cd 配合 Tab 使用 pwd: print current working directory,打印当前工作路径 ...

  4. matlab中m文件与m函数的学习与理解

    1. m文件与m函数的区别 所谓 MATLAB 程序,大致分为两类: M 脚本文件 (M-Script) 和 M 函数 (M-function), 它们均是普通的 ASCII 码构成的文件. M 脚本 ...

  5. MATLAB 最优化计算 (二)

    matlab 程序设计 1, for start:increment:end  若默认步长为1,则为 for start:end ———— end while  condition ————  end ...

  6. matlab学习笔记11_1低维数组操作

    一起来学matlab-matlab学习笔记11 11_1 低维数组操作repmat函数,cat函数,diag函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab ...

  7. matlab学习笔记10_7数值计算类型和常用计算公式

    一起来学matlab-matlab学习笔记11 数值数据类型以及特殊函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 ...

  8. matlab学习笔记10_6 字符串与数值间的转换以及进制之间的转换

    一起来学matlab-matlab学习笔记10 10_6 字符串与数值间的转换以及进制之间的转换 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合 ...

  9. matlab学习笔记10_5 通用字符串操作和比较函数

    一起来学matlab-matlab学习笔记10 10_5 通用字符串操作和比较函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张 ...

随机推荐

  1. Confluence 6 升级完成后的检查

    这个页面中的文章将会为 Confluence 管理员为 Confluence 升级完成后 提供检查列表以确保 Confluence 的升级顺利完成.这个检查列表没有包含所有需要检查的错误,但是将会检查 ...

  2. yml配置文件读取出错 Exception in thread "main" while scanning for the next token found character '\t(TAB)'

    这几天在学习springboot的微服务项目,在配置文件方面也想尝试下新的yml配置,就想把原来项目properties写的文件转换成yml试一下(老项目是之前检出在了eclipse里面),结果写好了 ...

  3. windows/linux VPS云服务器限制IP访问,限制别人的IP访问网站方法

    服务器VPS云服务器如何限制IP访问,限制别人的IP访问网站的方法 windows主机IIS限制IP访问方法:首先打开IIS点击“网站”,右键属性,(如果仅给单个网站设置,请选择下边的站点,点右键“属 ...

  4. 论文选读二:Multi-Passage Machine Reading Comprehension with Cross-Passage Answer Verification

    论文选读二:Multi-Passage Machine Reading Comprehension with Cross-Passage Answer Verification 目前,阅读理解通常会给出 ...

  5. uva 10288 gailv

    Problem F Coupons Input: standard input Output: standard output Time Limit: seconds Memory Limit: MB ...

  6. 通信技术以及5G和AI保障电网安全与网络安全

    摘 要:电网安全是电力的基础,随着智能电网的快速发展,越来越多的ICT信息通信技术被应用到电力网络.本文分析了历史上一些重大电网安全与网络安全事故,介绍了电网安全与网络安全.通信技术与电网安全的关系以 ...

  7. postman-SSL证书问题-支持HTTPS请求

    使用Google接口调试插件postman请求https协议的接口,postman提示: 为此,需要解决这个问题,提示信息已经给出了解决方案!Using self-signed SSL certifi ...

  8. git(二) 分支管理

    概念 分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇 ...

  9. Linux之文件、目录

    Linux之文件.目录 文件权限 User.Group.Others 在Linux中,任何一个文件都具有这三种身份的个别权限,三者的区别是 User: 指每一个单独的用户,例如member1,memb ...

  10. transform,transtion属性

    transform:变化类型,transtion变化方式