MATLAB基本语句

news2024/9/23 20:29:23

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.coloradmin.cn/o/2158391.html

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

相关文章

基于JAVA+SpringBoot+Vue的医院资源管理系统

基于JAVASpringBootVue的医院资源管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈…

基于SpringBoot的医院管理系统【附源码】

基于SpringBoot的医院管理系统(源码L文说明文档) 目录 4 系统设计 4.1 系统概述 4系统概要设计 4.1概述 4.2系统结构 4.3.数据库设计 4.3.1数据库实体 4.3.2数据库设计表 5系统详细实现 5.1 医生模块的实现 5.1.…

音视频入门基础:FLV专题(3)——FLV header简介

一、引言 本文对FLV格式的FLV header进行简介,FLV文件的开头就是FLV header。 进行简介之前,请各位先从《音视频入门基础:FLV专题(1)——FLV官方文档下载》下载FLV的官方文档《video_file_format_spec_v10_1.pdf》和…

猫咪掉毛背后的隐秘原因?除毛除臭宠物空气净化器双管齐下!

作为一个二胎家庭,两只猫咪,除了卖萌加倍之外,拉屎需要排队之外,家里最不缺就是毛了。作为一个名鼻炎患者真的很难顶。感受一下40度高温的养猫人,给掉毛怪疏毛浮毛飘飘,逃不过的饮水机,各个角落…

wpf,工具栏上,最小化按钮的实现

工具栏上&#xff0c;最小化按钮的实现。工具栏做成的是用户控件。 用户控件的xaml <Button HorizontalAlignment"Right" Height"32" Click"MinimizeClick" /> 用户控件的cs代码 private void MinimizeClick(object sender, RoutedEven…

IDEA创建Web项目(详细版)

目录 1 新建Web项目 步骤如下 1 打开idea,选择新建项目 2 点击创建 3 点击项目结构&#xff0c;选择添加模块 ---web 2 配置Tomcat 步骤如下 1 点击Edit Configurations&#xff08;编辑配置&#xff09; 1.1 右上角当前文件下 选择编辑配置 1.2 点击菜单栏中run 选…

奔驰「进退」两难

合资车企&#xff0c;尤其是BBA为代表的传统豪华品牌&#xff0c;正在进入阵痛期。 9月14日&#xff0c;奔驰在华合资公司—腾势新能源发生工商变更&#xff0c;比亚迪受让前者剩余10%股份&#xff0c;并变更为旗下全资子公司。至此&#xff0c;这个由奔驰和比亚迪在2011年成立…

Python 从入门到实战25(模块)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们讨论了类继承的相关知识。今天我们将学习一下模块的…

Linux 进程间通信(管道)

目录 一.理解进程间通信 1.进程间通信的意义 2.进程间如何实现通信呢&#xff1f; 二.匿名管道 1.匿名管道的底层原理 引用计数的应用 2.匿名管道代码实现 a.代码的整体框架 b.写接口 c.读接口 d.子进程资源回收 3.匿名管道的官方接口 4.*匿名管道四种情况和五种特…

Leetcode 2246. 相邻字符不同的最长路径(一般树)树形dp C++实现

问题&#xff1a;Leetcode 2246. 相邻字符不同的最长路径 给你一棵 树&#xff08;即一个连通、无向、无环图&#xff09;&#xff0c;根节点是节点 0 &#xff0c;这棵树由编号从 0 到 n - 1 的 n 个节点组成。用下标从 0 开始、长度为 n 的数组 parent 来表示这棵树&#x…

数据结构——顺序表、链表

目录 前言 一&#xff0c;数据结构 1&#xff0c;什么是数据结构&#xff1f; 2&#xff0c;有什么类型&#xff1f; 二&#xff0c;顺序表 1&#xff0c;线性表 2&#xff0c;顺序表基本结构 3&#xff0c;动态顺序表的功能实现 三&#xff0c;链表 1&#xff0c;链…

Go 1.19.4 路径和目录-Day 15

1. 路径介绍 存储设备保存着数据&#xff0c;但是得有一种方便的模式让用户可以定位资源位置&#xff0c;操作系统采用一种路径字符 串的表达方式&#xff0c;这是一棵倒置的层级目录树&#xff0c;从根开始。 相对路径&#xff1a;不是以根目录开始的路径&#xff0c;例如 a/b…

torch.nn系列函数学习 --- Conv2d函数

该函数的官方文档&#xff1a; https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html#torch.nn.Conv2d torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, biasTrue, padding_modezeros, deviceNone, dtypeNone)…

排序题目:将矩阵按对角线排序

文章目录 题目标题和出处难度题目描述要求示例数据范围 前言解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;将矩阵按对角线排序 出处&#xff1a;1329. 将矩阵按对角线排序 难度 5 级 题目描述 要求 矩阵对角线是一条从矩阵最上面行或者最左侧列中的某…

CentOS Linux教程(6)--CentOS目录

文章目录 1. 根目录2. cd目录切换命令3. CentOS目录介绍4. pwd命令介绍5. ls命令介绍5.1 ls5.2 ls -a5.3 ls -l 1. 根目录 Windows电脑的根目录是计算机(我的电脑)&#xff0c;然后C盘、D盘。 Linux系统的根目录是/&#xff0c;我们可以使用cd /进入根目录&#xff0c;然后使…

共享打印机,局域网搜不到

如果共享打印机后&#xff0c;局域网内其余机器检索不到 1. 排查 是否启用来宾账户&#xff08;Guest&#xff09; 2. 网络和共享中心->更改高级共享设置->启用网络发现、启用文件和打印机共享、关闭密码保护共享 排查基本可以解决搜索不到打印机问题

Transformer动画讲解

**Transformer工作原理**** **一、**** ******GPT的核心是Transformer******** *GPT* &#xff1a; **GPT&#xff08;Generative Pre-trained Transformer&#xff09;**** ****是一种基于单向Transformer解码器的预训练语言模型&#xff0c;它通过在大规模语料库上的无监督…

MatrixOne 助力某电信运营商构建低成本高性能车联网管理系统

客户基本情况 该电信运营商在物联网领域深耕多年&#xff0c;致力于为企业和个人提供全面的物联网解决方案&#xff0c;包括智能连接、设备管理、数据采集与分析等核心服务。凭借其强大的网络覆盖和技术优势&#xff0c;该运营商为各行业提供高效、安全、可靠的物联网服务&…

风速传感器一文浅谈 了解自然的力量

产品概述 本产品主要采用优质聚合物碳纤维为原材料&#xff0c;具有良好的防腐、防侵蚀等特点&#xff0c;能够保证仪器长期使用不起锈&#xff0c;同时配合内部顺滑的轴承系统&#xff0c;确保了信息采集的准确性。外型小巧轻便&#xff0c;便于携带和组装&#xff0c;三杯设…

MCU和YT9218交换机通过RMII连接

1、可以通过带RMII的MCU和EXT1端口连接&#xff0c;将MCU配置为RMII 100M/全双工就可以通 2、原先在这里改SW配置&#xff0c; 一直不通 3、后来通过api调用可以通 这样改&#xff1a; 在初始化后&#xff0c;添加下面代码 //使能RMII&#xff0c;phy模式 #define Port5 …