MATLAB学习笔记(二)——M文件
M文件
变量名的第一个字符必须是英文字母,最多包含31个字符(包括英文字母、数字和下画线),变量中不得包含空格和标点符号,不得包含加减号。文件名也视为变量名
M文件包括脚本文件和函数文件,它们的扩展名都是.m
脚本文件 (.m文件)
脚本文件只对MATLAB工作空间中的变量进行处理,并且文件中所有指令执行结果也都驻留在MATLAB基本工作空间(Base Workspace)中。只要用户不使用clear加以清除,且MATLAB指令窗不关闭,则产生的变量一直保存在基本工作空间中,供用户查看或者与其他脚本文件共享。
函数文件 (.m文件)
函数文件是MATLAB工作的基石,MATLAB的科学技术资源来自于MATLAB后台诸多的函数文件,MATLAB不断升级的版本其功能的扩展也正是基于添加更多更新功能的函数文件。
函数文件在运行时,MATLAB会为其开辟一个临时空间。当函数文件的最后一条指令执行完毕,或者遇到return指令时,函数工作空间及其所有中间变量被立即删除,它随函数文件的被调用而产生,随函数调用的结束而删除。在MATLAB整个运行期间可以产生任意多个函数工作空间。
%典型的函数文件格式如下:
function [output args]=FunctionName(input args)
% 创建希尔伯特矩阵的函数文件,Aij=1/(i+j-1),高度病态% make a gyhilb matrix
function b=gyhilb(m,n) %b is the output args,and the m and n are the input args
if nargin==1 %the number of input argsn=m
elseif nargin==0error('too less input args!')
elseif nargin>2error('too much input args!')
endif nargout>1error('too much output args!')
enda=zeros(m,n);
if n==ma=hilb(n);
elsefor i=1:mfor j=1:na(i,j)=1/(i+j-1);endend
end
if nargout==1b=a;
elseif nargout==0disp(a)
end
end
%保存完成该函数文件之后,在命令窗口中输入
>> OutputArgs=gyhilb(3,2)
% 计算n!
function f=ffactor(n)
if nargin~=1error('Wrong Input!')
endif nargout~=1error('Wrong Output!')
endif abs(n-floor(n))>eps|n<0 error('Error !n is not normal digital')
endif n>1f=ffactor(n-1)*n;
elsef=1;
end
end
% 保存后,在命令行输入:
OutputArgs=ffactor(InputArgs)
%即可运行该函数文件
运行M文件的方法有很多,最常用的方法是:
1、在指令窗中输入M文件的文件名
2、点击菜单中的run按钮
将输入参数、输出参数和函数名等处做相应修改保存该函数文件,记文件名为exm3_2
%编写函数文件
function sum=exm3_2(n)
sum=0;
for i=1:nsum=sum+i;
end
end
%运行函数文件
>> sum=exm3_2(30)
sum=465
说明:
1、在指令窗执行函数文件时必须事先在工作空间中输入宗量(参数)的值,或者直接将输入宗量的值键入函数名后面的小括号中。
2、函数文件在保存的时候,MATLAB将函数名默认为文件名,建议用户不要修改。一旦函数文件的文件名和函数名不一致时,MATLAB将以函数文件的文件名为准来执行。
3、用户可以通过在脚本文件中使用交互式输入指令input()
,达到和函数文件类似的执行效果。
MATLAB流程控制结构(条件结构、循环结构、开关结构、试探结构(MATLAB特有))
一、条件结构
% 编写文件名文件名为exm3_3的脚本文件
clear
x=input('Please input the number of x')
if x>=0 & x<=1y=2*sqrt(x)
elseif x>1 %注意此处的else和if需要一起写y=1+x+log(x) %log(x)是对x取自然对数,即ln(x)
elsedisp('No defination')
二、switch-case开关结构
n=input('Please input the score')
if n<0 | n>100disp('Error 404')
elset=fix(n/10); %fix() function:jie duan qu zheng han shuswitch tcase{9,10}disp('A')case 8disp('B')case 7disp('C')case 6disp('D')otherwisedisp('E')end
end
三、for…end…循环结构
%计算积分
clear
a=0+eps;
b=3;
n=1000;
h=(b-a)/n;
x=a:h:b;
y=0;
f=log(x)./(2*x.^2+1) %此处必须要加上点
for i=1:ns(i)=(f(i)+f(i+1))*h/2;y=y+s(i);
end
y%水仙花数
for i=100:999m=fix(i/100);n=rem(fix(i/10),10); %fix()函数的作用是截断取整(向下取整)k=rem(i,10); %类似于%if m*m*m+n*n*n+k*k*k==iiend
end
四、while…end…循环结构(特点:不定次数)
通常,while循环后的逻辑表达式为一个标量。如果是数组,要求数组元素全部为逻辑真时才能执行循环语句。
%输入一个数字,如果这个数字不是0,则继续当输入的数字是0时,跳出循环,算出平均值
clear
sum=0;
value=input('Please input the number you want!');
count=0;
while (value~=0)sum=sum+value;count=count+1;value=input('Enter a number,if the number is 0,then the program will end!');
end
average=sum/count
% average
MATLAB中同样有break
语句和continue
语句。
控制程序流的其他常用指令
1、input()指令
2、keyboard()指令:%一般使用在m-files里面,作用就是,当你运行m-files的程序时,它会在keyboard的位置停下,并且在命令窗口出现 》K ,这时你可以在命令窗口中输入命令,可以测试软件已经运行的程序(keyboard以上的程序),或者可以改变已运行程序所得到的变量!你可以在workspace里面观察变量的变化!当你调试好了以后,在》K后面输入return,程序就会接着刚才的继续运行(就是运行keyboard以后的程序。其实keyboard就是调试程序时候用的,比较常用的还有pause,但pause不可以改变已运行程序得出变量
3、disp()指令和echo指令%echo指令控制函数文件程序是否需要在屏幕上显示:当MATLAB执行程序中遇到echo on指令时,会显示当前执行的程序内容;echo off为解除echo on指令。
4、pause()指令:暂停执行程序,等待用户按任意键继续执行程序格式为:pause(n) %暂停n秒后,继续执行程序
5、警示指令:当程序中出现错误时,利用警示指令可以了解出错情况。常用的警示指令有:lasterr %显示MATLAB自动判断的最新出错原因,终止运行程序lastwarn %显示MATLAB自动判断的最新出错原因,继续执行程序warning('message') %显示警告信息message,继续运行程序error('message') %显示警告信息mesage,终止运行程序errortrap %出错后,是否继续运行程序的切换开关
MATLAB学习笔记(二)——M文件相关推荐
- MATLAB学习笔记——二维和三维绘图
MATLAB学习笔记--二维和三维绘图 近期练习matlab的二维和三维绘图,整理一下,以防忘记. 文章目录 MATLAB学习笔记--二维和三维绘图 一.二维绘图 1.plot命令 2.fplot 命 ...
- MATLAB学习笔记 :函数文件的定义和使用
数学建模比赛MATLAB从入门到精通教程_哔哩哔哩_bilibili function语法 1.编写函数文件,求半径为r的圆的面积和周长 (1)新建->函数 (2)编辑代码,保存 (3)回命令行 ...
- MATLAB学习笔记(二) -- 矩阵和数组
一.矩阵和数组的创建 函数法主要用于一些具有特许规律的矩阵. (1)zeros() -- 全零矩阵生成,ones() -- 全1矩阵 (2)eye() -- 单位矩阵,不支持二维以上的矩阵生成 (3) ...
- Matlab学习笔记——数据文件定位
写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 数据文件定位 1.fseek函数 2.ftell函数 3.feof函数 数据文件定位 1.fseek函数 用于改变 ...
- MATLAB学习笔记(二)
MATLAB学习笔记(二) 一.矩阵运算 矩阵分析 向量和矩阵的范数运算 矩阵的秩 矩阵的化零矩阵 矩阵的化简rref()函数 线性方程组 超定线性方程组求解 矩阵分解 1.对称正定矩阵的Choles ...
- MATLAB学习笔记(十二)
MATLAB学习笔记(十二) 一.数据插值 1.1 数据插值的计算机制 1.2 数据插值的matlab函数 二.曲线拟合 2.1 曲线拟合原理 2.2 曲线拟合的实现方法 三.数据插值与曲线拟合比较 ...
- 【台大郭彦甫】Matlab入门教程超详细学习笔记二:基本操作与矩阵运算(附PPT链接)
Matlab入门教程超详细学习笔记二:基本操作与矩阵运算 前言 一.基本操作 1.把matlab当作计算器使用 2.变量 3.控制格式输出 二.矩阵运算 1.矩阵 2.矩阵索引 3.使用:创建向量 4 ...
- MATLAB学习笔记(一):绘制二维箭头图
MATLAB学习笔记(一):绘制二维箭头图 MATLAB矢量图绘制 1 quiver函数 2 应用:绘制某一曲线的切向量和法向量 MATLAB罗盘图绘制 1 compass函数 2 应用:绘制相量图 ...
- MATLAB学习笔记(一)
MATLAB 一.安装的目录结构 二.常用的菜单及工具 布局 设置路径 设置工作路径 三.常用命令 四. 基础知识 数据类型 复数类型 `inf 和 NaN` 字符与字符串 函数句柄 结构体 结构体的 ...
- MATLAB学习笔记1——函数调用、参数传递、全局变量使用
Matlab学习笔记 最近笔者学习MATLAB用来处理机器人轨迹规划,在仿真实现中为了避免代码过于冗长,会进行分开任务区写代码,这就需要各任务区进行数据的交换. 笔者用两个办法 一个是设置变量为全局变 ...
最新文章
- 制作initrd(2):update-initramfs和mkinitramfs脚本分析
- JavaScript改变 HTML 内容
- Ghost XP基本介绍
- opencv 人脸识别 (二)训练和识别
- PrintWrite
- 如果你被这个视频深深地震撼!那你一定是幸运的!
- Python import其他文件夹的文件
- C类型和存储方式的语言变量
- 千万IOPS背后,宏杉科技“MS7000G2-Mach”为金融核心业务赋能
- Python数据清洗处理,csv,pandas,数据匹配
- c语言程序中文复制到word变乱码,怎么复制C程序代码到Word不会有乱码,不会有乱字等情况...
- 脚本、脚本语言、写脚本都是什么呀???
- 【论文学习】《On Prosody Modeling For ASR+TTS Based Voice Conversion》
- win10任务管理器中的专用GPU内存 vs 共享GPU内存
- 电脑一会,电脑一会黑屏一会正常怎么回事
- MATLAB颜色的使用
- 体验Android:个人所得税计算器 含源码
- 《论文写作》课堂收获
- navigationBar的控制
- 免费开源动画制作软件推荐(新手必备)
热门文章
- Centos7查看硬盘容量
- VC中的_variant_t和_bstr_t
- 推挽输出与开漏输出结构和原理详解
- “食尸鬼行动”攻击30多个国家超过130家企业 包括中国
- Android Studio 报错 Error:Some file crunching failed, see logs for details
- mac无线连接打印机进行打印和扫描
- Win10 IPv6 远程桌面连接(小米路由器)
- org.apache.hadoop.security.JniBasedUnixGroupsMappingWithFallback not org.apache.hadoop.security.Grou
- java编程删除文本框_Java获取和删除Word文本框中的表格
- 网关报错:com.netflix.zuul.exception.ZuulException: Filter threw Exception,调用服务和网关陷入死循环,重复报相同的错误