MATLAB基本语句

MATLAB语言为解释型程序设计语言。在程序中可以出现顺序、选择、循环三种基本控制结构,也可以出现对M-文件的调用(相当于对外部过程的调用)

由于 MATLAB开始是用FORTRAN语言编写、后来用 C语言重写的,故其既有FORTRAN的特征,又在许多语言规则方面与C语言相同。

2.1 顺序结构语句

在顺序结构语句中,包括表达式语句、赋值语句、输入输出语句、空语句等。

2.1.1 表达式语句

格式:

表达式,    %显示表达式值

表达式;    %不显示表达式值

表达式      %显示表达式值

如:

   x + y,

   sin(x);

   –5

最后的表达式值暂保存在变量ans中。

2.1.2 赋值语句

格式:

v = 表达式,    %结果送v并显示v

v = 表达式;    %结果送v不显示v

v = 表达式      %结果送v并显示v

2.1.3  空语句

格式:

 

 

2.1.4  输入语句

1input语句(实际上是函数)

格式1

input(提示字符串)

功能:

显示提示字符串,可输入数字、字符串(两端用单引号括起)、或表达式   

格式2

input(提示字符串,'s'

功能:

显示提示字符串,并把输入视为字符串

2yesinput语句

格式:

yesinput(提示字符串,缺省值,值范围)

功能:

显示提示字符串和缺省值,若只打入回车则以缺省值作为输入值,若输入的值不在指定范围内则认为输入无效,B并等待用户重新输入。

如:

t=yesinput('指定线的颜色',

    'red','red|blue|green')

运行结果如下:

指定线的颜色(red):yellow  %不在值内

指定线的颜色(red):blue    %重输

t =

   blue

x=yesinput('输入元素个数',10,[1,20])

运行结果如下:

输入元素个数(10):

x =

   10

3Keyboard语句

格式:

Keyboard

功能:

暂停M-文件的执行,并等待用户从键盘输入命令以查看或改变变量的值,直到输入return命令而返回相应的M-文件继续执行。本语句用于调试M-文件。

4pause语句

格式1

pause      

功能:暂停,敲下任一键继续

格式2

pause(n) 

功能:暂停n

格式3

puase on    

功能:本命令后的pause语句有效

格式4

pause off    

功能:本命令后的pause语句无效

5menu语句

格式:

menu('菜单名',S1,S2,,Sk)

功能:生成一个按钮式菜单系统

其中:

字符串S1,S2,,Sk为菜单项(K32)

函数返回值为用户选中的菜单项号。

M-文件,menu_d.m如下:

%选择一种颜色

while 1

  k=menu('选择一种颜色','红色',

    '黄色','兰色','绿色','白色','关闭');

  if   k = = 1  color = 'Red'

    elseif  k = = 2  color = 'Yellow'

    elseif  k = = 3  color = 'Blue'

    elseif  k = = 4  color = 'Green'

    elseif  k = = 5  color = 'White'

    elseif  k = = 6  break

  end

end

2.1.5  输出语句

1、直接终端显示

当一个表达式、赋值语句等语句用逗号或者回车作为结尾符,而不是分号作为结尾符时,该表达式或赋值语句的运行结果均在终端上显示出来。

2diary语句(日记)

格式1

diary  文件名

功能:

打开指定的文件并将该语句之后终端显

示的内容(包括键入的命令和输出结果)记入该文件。

格式2

diary  off

功能:

暂停记入显示内容到指定的文件

格式3

diary  on

功能:

继续记入显示内容到指定的文件

diary语句可产生一个日志文本文件,为以后书写报告或编辑M-文件提供素材。

3.disp 语句

格式:

disp(x)

功能:显示x的值,但不显示x的名

4.sprintf 语句

格式:

[Str,ErrMsg] = SPRINTF(格式串,表达式1,...)

其中:格式串与C语言的规定一致

          Str存放结果的

功能:

按照格式串的规定把各表达式的实部分别转换为字符串并存入 Str,若有错误,则把错误信息存入ErrMsg

如:

sprintf('%0.5g',(1+sqrt(5))/2)          1.618

sprintf('%0.5g',1/eps)                      4.5036e+15       

sprintf('%15.5f',1/eps)                     4503599627370496.00000

sprintf('%d',round(pi))                      3

sprintf('%s','hello')                           hello

sprintf('The array is %dx%d.',2,3)   The array is 2x3.

sprintf('\n')                                        换行

2.1.6变量值的保存与恢复

1、保存工作空间中的变量到文件中

格式1

save  文件名

功能:

保存工作空间中的全体变量到指定文件(扩展名设定为.mat)中。若省略文件名,则文件名缺省为"MATLAB.mat"。该文件为二进制格式,称为MAT文件。

格式2

save  文件名   变量名表 [-append]

功能:

保存指定的变量到文件中。变量名表中两变量之间用逗号或空格分开。

格式3

save  文件名   变量名表  -ascii  [-tabs]

功能:

8位数、ASCII码格式保存指定的变量到文件中。

格式4

save 文件名 变量名表 -ascii –double[-tabs]

功能:

16位数、ASCII码格式保存变量到指定文件中。

2、保存工作空间中的变量到C风格文件中

相关语句(后面详介):

fid=fopen(文件名,权限串)

fwrite(fid,表达式,精度串)%二进制

fprintf(fid,格式,表达式)

fclose(fid)

3、恢复变量到工作空间

格式1

load

功能:

从"MATLAB.mat"文件中恢复变量

格式2

load  文件名

功能:

从指定文件中恢复变量

格式3

load  文件名  -ascii

功能:

从无扩展名的文本文件中生成一个以文件名为变量名的数组(文件中含有m行、n列数据)

格式4

load  文件名.扩展名  -mat

功能:

从具有指定扩展名的MAT文件中恢复变量。

格式5

load  文件名.扩展名

功能:

从具有指定扩展名的文本文件生成与文件名同名的数组(文件中含有m行、n列数据)。

例如:

设文本文件coff.txt中的数据为:

1,2,3,4,5

6,7,8,9,10

执行命令

load  coff.txt

则命令

coff

将显示

coff=

    1  2  3  4  5

  1. 7  8  9  10

格式6:

[A, Count] = fread(fid,size,precision)

[A,Count] = fscanf(fid,format,size)

其中:

precision可为:

 MATLAB    C or Fortran     Description

'uchar'   'unsigned char'  unsigned character,  8 bits.

'schar'   'signed char'    signed character,  8 bits.

'int8'    'integer*1'      integer, 8 bits.

'int16'   'integer*2'      integer, 16 bits.

'int32'   'integer*4'      integer, 32 bits.

'int64'   'integer*8'      integer, 64 bits.

'uint8'   'integer*1'      unsigned integer, 8 bits.

'uint16'  'integer*2'      unsigned integer, 16 bits.

'uint32'  'integer*4'      unsigned integer, 32 bits.

'uint64'  'integer*8'      unsigned integer, 64 bits.

'single'  'real*4'         floating point,

32 bits.

'float32' 'real*4'         floating point,

32 bits.

'double'  'real*8'         floating point,

64 bits.

'float64' 'real*8'         floating point,

64 bits.

功能:

从C风格文件中读入size个数据到ACount为实际读入数据个数

    1. 选择结构

2.2.1 if语句

格式1

if 表达式

语句组  

end

功能:

若表达式值的实部或值为真,则执行语句组

格式2

if  表达式

语句组1

else  

语句组2

end

功能:

若表达式值实部非0或值为真,则执行语句组1,否则执行语句组2

格式3

if  表达式1

语句组1      

elseif  表达式2

语句组2

   

elseif  表达式n

语句组n

else  

  语句组n+1

end

功能:

若表达式1为真则执行语句组1

否则,若表达式2为真则执行语句2

      ┆

否则若表达式n为真则执行语句组n

否则执行语句组n+1

2.2.2 switch语句

格式:

switch  表达式

  case e1 

    语句组1

  case {ex1,ex2,ex3,...}

    语句组2

       ...

  case {exp1,exp2,exp3,...}

    语句组n

  otherwise,

    语句组n+1

end

功能:

若表达式的值为e1则执行语句组1

否则,若表达式的值为ex1,ex2,ex3,…中的一个,则执行语句组2

      

否则,表达式的值为exp1,exp2,exp3,…中的一个,则执行语句组n

否则,则执行语句组n+1

例如:

switch lower(METHOD)

  case {'linear','bilinear'}

     disp('Method is linear')

  case 'cubic'

     disp('Method is cubic')

  case 'nearest'

     disp('Method is nearest')

  otherwise

     disp('Unknown method.')

  end

switch语句是5.0以上版本中增加的,可以用更加简洁的方式描述多向选择

例如:

clear;

%创建元胞数组:a,b,c,d

for i=1:10;a{i}=89+i;b{i}=79+i;c{i}=69+i;d{i}=59+i;end;

c=[d,c];

Name={'李洪斌','赵向阳','龚  力','王立伟','马玉书'};

Mark={72,83,56,94,100};Rank=cell(1,5);

%

S=struct('Name',Name,'Marks',Mark,'Rank',Rank);

%

for i=1:5

   switch S(i).Marks

   case 100

      S(i).Rank='满分';

   case a

      S(i).Rank=' 优秀';

   case b    

      S(i).Rank=' 良好';

   case c     

      S(i).Rank=' 及格';

   otherwise  

      S(i).Rank='不及格';

   end

end

%

disp(['学生姓名  ','  得分  ','    等级']);

for i=1:5;

 disp([S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank]);

end;  

学生姓名    得分      等级

李洪斌      72       及格

赵向阳      83       良好

龚  力      56      不及格

王立伟      94       优秀

马玉书      100      满分  

2.2.3 try语句

格式2

try  

语句组1

catch  

语句组2

end

功能:

执行语句组1,若执行语句组1的过程中发生错误则执行语句组2。可查看lasterr中的内容,获取错误信息。(lasterr('')清除错误信息)

2.2.4 选择语句的嵌套

当以上选择语句出现在另一个选择语句的语句组中时,即构成了选择语句的嵌套。

当选择语句嵌套时,应注意一个if必须与一个距离最近的end匹配。

2.3 循环结构语句

2.3.1   for语句

格式1

for  变量=初值[:增量]:终值

    语句组             %循环体

end

其中:

   "增量"若省略时,增量值取为1

功能:

表示对于变量从初值直到终值,每次变化一个增量的每一个值都执行语句组一次。

如:

for  n = 1:100

  x(n) = sin(npi/100)

end

本格式的for语句用于执行一定次数的循环

格式2

for  变量=数组名

    语句组       %循环体

end

功能:

每次循环时取数组的下一列元素(第一

次循环时取第1列元素)赋给变量(故变量本身成为数组),然后执行语句组,直到数组的全体列都取完为止。

如:

a=[1,5,9;0,–1,1];

for n=a,n(1)–n(2), end

ans =

   1

ans =

   6

ans =

   8

2.3.2   while语句

格式:

while  表达式

语句组

end

当表达式的值为真或其实部为非0,重复执行语句组(循环体),直到表达式的值为0或其实部为0

注意:表达式为数组时全部非0才为真

如:

a=[1,3,5;–1,0,1]; n=0;

while  a>0, n=n+1, end

由于a中含有一个0,故一次循环也未执行。

2.3.3  循环嵌套

在一个循环的循环体内又含有另一个循环结构,即构成循环的嵌套。

2.3.4  break语句

格式:

break

功能:

该语句将中止当前它所在的循环。

如:找出mn之间的全体素数

function u=fq(m,n)

%找出mn的全体素数 fq(m,n)

%若仅有一个参数则m= 2,给出参数作为n

%若没有参数则m = 2n = 100

1999.3

if  nargin == 0,

   m = 2; n = 100;

elseif nargin == 1,

   n = m; m = 2;

end

i=1;

for  t = m:n,

    if t ~= 2;

      for  r = 2:t–1,

        if  fix(t/r)r == t/rr,

           break

        end

      end

      if r==t–1,u(i)=t;i=i+1;end

   else

     u(i)=t;i=i+1;

   end

end

执行fq的运行结果:

ans =

Columns 1 through 12

2    3     5     7    11    13    17    19    23    29    31    37

Columns 13 through 24

41    43    47    53    59    61    67    71    73    79    83    89

Column 25

97

2.4  文件读写函数

1fopen函数

fid = fopen'文件名''权限'

其中:

权限—可为r(只读)、w(只写)、

    ‘a(追加)、rb(二进制文件

    只读)、wb(二进制文件只写)、

    ‘ab(二进制文件追加)、rt(文

    本文件只读)、wt(文本文件只

    写)、at(文本文件追加)。

功能:

函数执行成功,fid中为一整数,表示文件代号;否则为–1

fid规定标准输入为0,标准输出为1,错误信息文件为2

2fclose函数

fclose(fid)

fclose('all')

3fprintf函数

count=fprintf(fid,'格式串',输出名表)

功能:

将输出名表中的成员依次按格式串输出到fid文件中,返回输出的字节数。关于格式串的规定与C相同。如%s(字符串输出)、%d(整数输出)、%10.2f(实数输出,共10个字符宽,含两位小数)等。

4fscanf函数

[变量,count]=fscanf(fid,'格式串',长度)

功能:

从文件fid中读取指定长度(按格式串控制)的数据到变量中,count为读入字节数,若长度省略,表示整个文件。若为[m,n]表示读入一个mn列的矩阵到变量中。

5fread函数

[变量,count] = freadfid,长度)

功能:

fid文件中的二进制数据到变量中,长度含义同fscanf函数。

6fwrite函数

count = fwritefid,变量)

功能:

将变量中的全体元素按二进制形式写入fid文件中。count为成功写入的元素个数。

7fgetl函数与fgets函数

变量= fgetl(fid)

变量= fgets(fid)

功能:

均为从fid中读入一行,但前者读入时不含回车换行,而后者包含回车换行。

还有其它一些函数,请参阅相关书籍。

    1. 一个可运行MATLAB命令的函数

格式:

eval'字符串'

功能:

该函数将执行宏替换:即把字符串看成一个命令(有点类似于C中的System函数)

如:

for  n = 1:3

eval(['M',num2Str(n),'= magic(n)'])

end  

执行后结果为:

M1 =                1阶魔方阵

     1

M2 =                %2阶魔方阵

     1     3

     4     2

M3 =                %3阶魔方阵

     8     1     6

     3     5     7

     4     9     2  

注意:程序中方括号的使用,可把其中各字符子串拼接起来,也可写成:

f = ['M',num2str(n),'magic(n)']);

eval(f)

又如:

m=5;t='1/(i-1+j)';

a = zeros(m);

for  i = 1:m

   for  j = 1:m

     a(i,j) = eval(t);

   end

end

a  

执行后结果为:

a =

    1.0000    0.5000    0.3333    0.2500    0.2000

    0.5000    0.3333    0.2500    0.2000    0.1667

    0.3333    0.2500    0.2000    0.1667    0.1429

    0.2500    0.2000    0.1667    0.1429    0.1250

0.2000    0.1667    0.1429    0.1250    0.1111  

MATLAB中还有其他类似的函数,如:

feval, evalin, assignin, evalc

    1. 局部工作空间和基本工作空间

MATLAB命令窗口中使用的工作空间为基本工作空间,在该窗口中定义的变量、非函数文件中定义的变量以及全局变量均存在于该工作空间中。

各函数文件中所定义的变量仅存在于相应的局部工作空间中,也就是说,一个函数文件执行结束后,其定义的变量也随之消失了。

函数文件之间可以通过输入、输出参数传递信息。也可以通过使用全局变量传递信息。

global  变量名表

该命令使相应变量名表中的变量成为全局变量,出现在各函数中global命令中的相同变量名将取得同一值(即全局变量是按共名原理设计的)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1539303.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

小琳AI课堂:机器学习

大家好,这里是小琳AI课堂,今天我们要聊的是机器学习,它是人工智能(AI)的一个分支,主要研究如何让计算机系统通过数据学习,从而做出决策或预测。 下面我们就从四个角度来详细解释一下“什么是机器…

感知笔记:ROS 视觉- 跟随红球

- 目录 - 如何在 ROS 中可视化 RGB 相机。如何作为机器人切换主题。如何创建 blob 检测器。如何获取要跟踪的颜色的颜色编码。如何使用 blob 检测数据并移动 RGB 相机以跟踪 blob。 机器人技术中最常见的传感器是不起眼的 RGB 摄像头。它用于从基本颜色跟踪(blob 跟…

把设计模式用起来!(4) 用不好模式?之原理不明

(清华大学出版社 《把设计模式用起来》书稿试读) 上一篇:把设计模式用起来!(3)用不好模式?之时机不对 为什么用不好设计模式?——原理不明 难搞的顾客:“抹这种霜&#…

学习ROS2第一天—新手笔记(humble版本)

————今早七点达到实验室,吃了早饭收拾了一下现在07:24开始学习———— 1. RO2与ROS1的不同架构: ROS1架构下,所有节点都是Master进行管理 ROS使用基于DDS的Discovery机制,和Master说再见 API的重新设计 编译…

数集相等的定义凸显初等数学几百年重大错误:将无穷多各异数集误为同一集

黄小宁 创造型人才的突出特征:敢于独立思考,不愿人云亦云随大流做分数的奴隶。初数中定义域为R的一次函数ykx(正常数k≠1)的值域问题是师生们不屑一顾的初数中的初数,然而数集相等的定义凸显初数一直搞错了y的值域而将…

MD5、SHA256哈希值生成验证工具-生成文件的“指纹ID”-调用了微软.Net Framework里的加密工具来生成哈希值

MD5、SHA256等哈希值生成工具通常用来验证文件的完整性,或者说是生成文件的“指纹ID”。 Windows系统下调用哈希工具,要用命令提示符cmd调用,生成和比较不太方便。我编写了一个小工具,将文件拖拽到软件界面即可生成比较。 下载地址…

前端——表格、列表标签

今天我们来学习一下web开发里面的表格标签、列表标签 常用快捷键&#xff1a; shift alt 下 复制粘贴选中内容 表格标签 table HTML 表格由 <table> 标签来定义。 HTML 表格是一种用于展示结构化数据的标记语言元素。 每个表格均有若干行&#xff08;由 <tr>…

Qt实战案例(60)——利用QTimer类实现实时时间功能

目录 一、项目介绍二、项目基本配置三、UI界面设置四、主程序实现4.1 widget.h头文件4.2 widget.cpp源文件 五、效果演示 一、项目介绍 本文介绍利用QTimer类实现实时时间功能并在状态栏中进行显示。 二、项目基本配置 新建一个Qt案例&#xff0c;项目名称为“TimeTest”&am…

【北京迅为】《STM32MP157开发板使用手册》- 第三十八章 任务管理实验

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

解决【WVP服务+ZLMediaKit媒体服务】加入海康摄像头后,能发现设备,播放/点播失败,提示推流超时!

环境介绍 每人搭建的环境不一样&#xff0c;情况不一样&#xff0c;但是原因都是下面几种&#xff1a; wvp配置不当网络端口未放开网络不通 我搭建的环境&#xff1a; WVP服务&#xff1a;windows下&#xff0c;用idea运行的源码 ZLM服务&#xff1a;虚拟机里 问题描述 1.…

训练加速和推理加速

1. 训练加速 训练加速指的是通过优化技术、硬件加速等方式&#xff0c;减少训练模型的时间&#xff0c;尤其是对于大规模数据集和复杂模型。 训练的特点&#xff1a; 计算量大&#xff1a;模型训练时需要执行前向传播和反向传播&#xff0c;并在多个迭代&#xff08;epoch&a…

Java 23 的12 个新特性!!

Java 23 来啦&#xff01;和 Java 22 一样&#xff0c;这也是一个非 LTS&#xff08;长期支持&#xff09;版本&#xff0c;Oracle 仅提供六个月的支持。下一个长期支持版是 Java 25&#xff0c;预计明年 9 月份发布。 Java 23 一共有 12 个新特性&#xff01; 有同学表示&…

【Java】网络编程-地址管理-IP协议后序-NAT机制-以太网MAC机制

&#x1f308;个人主页&#xff1a;努力学编程’ ⛅个人推荐&#xff1a; c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构&#xff0c;刷题刻不容缓&#xff1a;点击一起刷题 &#x1f319;心灵鸡汤&#xff1a;总有人要赢&#xff0c;为什么不能是我呢 &#x1f434…

vscode关闭git的提交提示

问题描述&#xff1a; vscode中光标停留在每一行都会有出现git仓库的提交信息&#xff0c;影响代码阅读。 解决方法&#xff1a; 左下角设置齿轮&#xff1a; 输入关键词commit input 取消勾选&#xff0c;即可解决。

Apache subversion 编译流程

目录 1. 概述2. 依赖库简介2.1 Expat2.2 Apache apr2.3 Apache apr-iconv2.4 Apache apr-util2.5 Zlib2.6 OpenSSL2.7 Sqlite2.8 Apache Serf2.9 Apache subversion3. 编译3.1 Expat编译3.1.1 源码信息3.1.2 CMake-GUI3.1.3 编译步骤3.2 APR编译3.2.1 源码信息3.2.2 编译步骤3.…

2024年【中级消防设施操作员(考前冲刺)】及中级消防设施操作员(考前冲刺)模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 中级消防设施操作员&#xff08;考前冲刺&#xff09;根据新中级消防设施操作员&#xff08;考前冲刺&#xff09;考试大纲要求&#xff0c;安全生产模拟考试一点通将中级消防设施操作员&#xff08;考前冲刺&#xf…

mp4转换成mp3,八个超简单视频转换方法

怎么将mp4转换成mp3&#xff1f;在现代数字媒体的世界中&#xff0c;视频和音频的转换变得尤为重要。许多人在观看视频时&#xff0c;常常会被其中的声音吸引&#xff0c;想要单独保存下来。这时&#xff0c;将MP4格式的视频转换为MP3格式的音频就显得尤为必要。MP4是一种常用的…

长时间认知任务中的大脑补偿机制:fNIRS和眼动追踪研究

摘要 在需要高度集中和高效完成关键任务的领域&#xff0c;如何在疲劳状态下维持认知表现是一个非常重要的问题。在这种情况下&#xff0c;帮助大脑克服疲劳的补偿机制研究就显得尤为重要。本研究探讨了生理、行为和主观测量之间的相关性&#xff0c;同时考虑了疲劳对工作记忆…

yolov5/8/9/10模型在VOC数据集上的应用【代码+数据集+python环境+GUI系统】

yolov5/8/9/10模型在VOC数据集上的应用【代码数据集python环境GUI系统】 1.背景意义 VOC数据集被广泛应用于计算机视觉领域的研究和实验中&#xff0c;特别是目标检测和图像识别任务。许多知名的目标检测算法都使用VOC数据集进行训练和测试。VOC挑战赛&#xff08;VOC Challeng…

maxwell 输出消息到 kafka

文章目录 1、kafka-producer2、运行一个Docker容器&#xff0c;该容器内运行的是Zendesk的Maxwell工具&#xff0c;一个用于实时捕获MySQL数据库变更并将其发布到Kafka或其他消息系统的应用3、进入kafka容器内部4、tingshu_album 数据库中 新增数据5、tingshu_album 数据库中 更…