MATLAB 界面及基础语法

MATLAB:全称为Matrix Laboratory
可使用Ctrl + C打断进程

一.功能及界面
1.数值计算和符号计算
(1)MATLAB以矩阵作为数据操作的基本单位,并提供大量数值计算函数
(2)MATLAB和符号计算语言Maple结合进行符号计算

2.绘图

·对图形句柄进行的低层绘图操作
·建立在低层绘图操作上的高层绘图操作

3.编程语言

特征:程序结构控制,函数调用,数据结构,输入输出,面向对象...

4.MATLAB工具箱
(1)两部分:基本部分,可选部分
(2)两大类:功能性工具箱,学科性工具箱

5.桌面概述
(1)3个窗口:
在这里插入图片描述

  • 命令行窗口:
·主要交互窗口,用于输入命令并显示图形外的所有执行结果
·">>"为命令提示符,表示处于准备状态
  • 工作区:
·用于储存各种变量和及其值
·可对变量进行增删改查
·双击变量名后进入VARIABLE窗口,可以查看详细信息(如类型)
  • 当前路径文件夹窗口:
·指MATLAB运行文件时的工作目录
·只有在当前目录/搜索路径下的文件/函数可被调用
·在该窗口可显示/修改当前目录,可显示当前目录下的文件并提供搜索功能
	>> cd path:修改当前目录为path
		cd C:\mydir
	>> cd:查看当前工作目录
  • HOME栏:
New选项可以创建新脚本,Open选项可以打开脚本
Layout选项-Command History选项 可以打开历史命令记录

(2)返回默认布局:Layout选项-Default选项
在这里插入图片描述
(3)退出命令:

·主窗口右上角关闭按钮
·命令窗口输入Exit/Quit命令

(4)搜索路径

·文件搜索次序为:是否为变量-->是否为内部函数-->是否为当前目录中文件-->是否为搜索路径下其他目录中文件
·查看所有搜索路径:
	>> path
·设置搜索路径:
	>> userpath('path')#path指定将哪条路径放入搜索路径
	>> savepath

二.基本语法
0.优先级
在这里插入图片描述
1.输入命令

#加减乘除次方:+,-,*,/,^
  #运算顺序:( ) --> ^ --> */ --> +-
	>> 3 * 5
	ans = 
	      15
#赋值:=(如不指定变量,默认为ans):
	>> m = 3 * 5
	m = 
	    15
	#让变量m自增1:
	>> m = m + 1
	m = 
	    16
	#创建一个名为y,值为m/2的变量
	>> y = m / 2
	y = 
	    8
#在命令的末尾添加分号将抑制输出,但仍会执行该命令;否则会在命令行窗口中显示结果
	>> k = 8 - 2;
#可以按键盘上的上箭头键调用上一条命令,下箭头键调用下一条命令
	#要执行此操作,命令行窗口必须为活动窗口
	>> m = 3 * k #从m = 3 * 5 修改而来
	m = 
	    18
#仅输入变量名称时,会返回该变量的当前值
	#对浮点数默认显示到小数点后4位
	>> k
	k =
	    6
#修改变量值后,由该变量计算得到的变量的值不变
	>> y
	y =
	    8
#同一行不同命令间使用逗号(,)/分号(;)分隔
	>> q = 1,w = 2;e = 3
#续行符(...):在物理行结尾加续行符表示下一物理行仍为本行的一部分
	>> QED = 3*(4/2-3^7)...
	-15^(2-3*6^5);
#input("x")要求输入值,命令行界面中显示x

2.在变量中存储数据
(1)变量命名规则:

·以字母开头
·仅包含字母,数字,下划线(_)
·区分大小写
·无需声明类型

(2)数据类型:默认为double
在这里插入图片描述
在这里插入图片描述

>> format <type>:以指定类型显示数据

(3)删除变量:

>> clear [variable]
#如果不指定变量.清除所有Workspace中的变量

(4)清除命令行窗口:

  • 使用后所有变量均不被清除
>> clc

(5)matlab中字符串使用单引号(’ ')扩起

(6)查看变量:

>> who:查看Workspace中的变量
>> whos:查看Workspace中的变量及详细信息

3.内置的函数和关键字
(1)关键字:

>> iskeyword:查看有哪些关键字

#pi:圆周率Π
  #只显示小数点后四位,但以更高精度存储
  >> a = pi
  a = 
      3.1416

#NaN:非数值(Not a Number);用于表示缺失数据
  >> x = Inf / Inf
  x = 
      NaN

#ans:默认变量名

#Inf:无穷大(Infinity)
  >> x = 1 / 0
  x =
      Inf

#i/j:复数单位

#eps:2.2204e-16
  #实际是1个函数,默认是2.2204e-16

(2)内置函数:见 函数 部分

(3)使用方括号([ ])获取多个输出:

#size()两个结果分别为矩阵的行数,列数
>> data = [1 2 3;1 2 3]
data =
       1    2    3
       1    2    3
[dr,dc] = size(data)
dr =
     2
dc =
     3
#max()/min()两个结果分别为最大/小值及其索引
>> v = [1 2 3 5 4 2.01 3.2]
v =
    1.0000    2.0000    3.0000    5.0000    4.0000    2.0100    3.2000
>> [vMax,ivMax] = max(v)
vMax =
       5
ivMax =
        4
>> [a,b] = min([1 2 3;1 2 3])
a =
    1    2    3
b =
    1    1    1

三.导入数据
1.保存和加载变量
(1)将变量保存到.mat文件中:

save filename x:将变量x保存到文件filename.mat中

>> data = 9
data =
       9
>> save datafile data #将变量data保存到文件datafile.mat中

(2)从.mat文件加载变量:

load filename:从文件filename.mat加载变量

>> load datafile #从datafile.mat加载变量

2.导入工具

  • 打开文件:
    在这里插入图片描述
    文件打开后:
  • 要导入的数据以蓝色突出
  • 缺失的数据以橙色突出
  • 可通过IMPORTED DATA栏选择数据导入方式
  • 使用IMPORT栏-Import Selection按钮导入
  • 可导入表格.图像.文本等

在这里插入图片描述
四.获取帮助
1.点击RESOURCES栏-help按钮打开文档:
在这里插入图片描述
在这里插入图片描述
2.通过doc命令查询:

doc func:打开func函数的文档
>> doc randi

3.查看帮助:

help:查看帮助
help <name>:查看指定对象的帮助
  #对于自定义函数,显示的帮助就是其中的注释

五.导入/导出变量
1.load()与save():

#将Workspace中的变量保存到文件
save("<filename>"[,<variables>,"<fmt>","<version>","-nocompression","-append"]):将工作区中指定变量保存到指定文件
  #是命令形式的语法,可省略为save "<filename>" [<variables> "<fmt>" "<version>" "-nocompression"]
  #参数说明:
    filename:指定保存到哪个文件;str;需要包含后缀名
      #如果该文件不存在,创建文件;如果已存在,覆盖原有文件
    variables:指定保存哪些变量和字段;默认为所有
    fmt:指定文件格式;默认为MATLAB®格式的2进制文件(.MAT文件);str
      格式:"-<format>";如"-ascii",在ASCII文件中不压缩变量
    version:指定.mat文件版本;str
      格式:如'-v7'或'-v7.3'
    '-nocompression':将变量保存到.mat文件,而不压缩
      #仅支持.mat文件版本7和7.3,因此,version必须为'-v7'或'-v7.3'
    #其他参数,参加官方文档

#加载文件中的变量到Workspace
load(<filename>[,<variables>,"-ascii","-mat"]):加载filename中的指定变量到工作区
  #参数说明:
    vairables:指定加载哪些变量和字段;默认为所有
    '-ascii': 将filename视为ASCII文件,而不管文件扩展名如何
      #如果filename是ASCII文件,会创建1个包含该文件数据的double数组,该数组的变量名为filename
    '-mat':将filename视为MAT文件,而不管文件扩展名如何
      #如果filename是MAT文件,会将变量加载到工作区

2.xlsread()与xslwrite():不推荐

#加载Excel文件中的变量到Workspace
[<num>[,<txt>,<raw>]] = xlsread(<filename>[,<sheet>,"<xlRange>","basic"]):读取名为filename的Excel文件中的指定工作表
  #如果要跳过某些参数继续指定之后的参数,跳过的参数用" "表示
  #参数说明:
    sheet:指定工作表;默认为1(第1个工作表);int
    xlRange:指定工作表内的读取范围(矩形区域);默认为全部
      格式:"x:y"x为区域的左上角单元格,y为右下角单元格;只写一半表示开始位置;如"E1","A1:C3"
    num:返回的数值数据
    txt:返回的文本数据
    raw:返回的数值和文本数据
    #其他参数,参加官方文档

#将Workspace中的变量保存到Excel文件
[status,msg] = xlswrite(<filename>,<A>[,<sheet>,<xlRange>]):将矩阵A写入到名为filename的Excel文件的指定工作表中
  #追加,而非覆盖
  #参数说明:
    sheet:指定工作表;默认为1;int
    xlRange:指定写入范围(矩形区域);默认为左上角
      格式:"x:y"x为区域的左上角单元格,y为右下角单元格;只写一半表示开始位置;如"E1","A1:C3"
    status:写入操作的状态;操作成功时为1,否则为0
    msg:写入操作生成的警告或错误消息

3.对文件的底层I/O:

#指在Byte/Char层面读/写文件
#每个文件有1个ID,即fid
#在文件中的位置由1个可以移动的光标指定
########################底层I/O函数########################
[fileID[,errmsg]] = fopen("<file>"[,<permission>,"machinefmt","encodingIn"]):打开文件或获得有关打开文件的信息
  #参数说明:
    file:要打开的文件
    permission:指定打开类型;可为"rb"(默认值)/"r"/"r+"/"w"/"w+"/"a"/"a+"
    machinefmt:指定在文件中读写字节/位时的顺序
    encodingIn:指定与文件相关联的字符编码方案
    fileID:≥3的整数文件标识符
      #Matlab保留文件标识符0,1,2用于标准输入/输出(屏幕)/错误
    errmsg:打开文件失败时,为错误信息;否则,为空字符向量
fIDs = fopen("all"): 返回包含所有打开文件的文件标识符的行向量
  #为标准输入/输出/错误而保留的标识符不包括在内
  #向量中元素的数量等于打开文件的数量
[filename[,permission,machinefmt,encodingOut]] = fopen(<fileID>):返回上次调用fopen()打开fileID指定的文件时使用的文件名等相关信息
  #输出文件名将解析到完整路径
  #fopen()不会从文件读取信息来确定输出值
  无效的fileID会为所有输出参数返回空字符向量
  #参数说明:
    fileID:整数文件标识符
    file:文件名
    permission:打开方式
      #如果是以二进制模式打开的文件,会包含字母'b'
    machinefmt:计算机格式
    encodingOut:编码方式

#实例:
>> [fileID,err] = fopen('out.txt','w','n','Shift_JIS');
#########################################################
[status] = fclose("<file>"):关闭打开的文件
  #参数说明:
    file:要关闭的文件;可为fileID(文件标识符)/"all"(所有打开的文件)
    status:关闭成功时,为0;否则,为-1
#########################################################
[A,count] = fscanf(fileID,"fmtSpec"[,sizeA]):读取文本文件中的数据
  #将文件光标定位在文件结尾标记处
  #参数说明:
    fileID:文件标识符,指定要打开的文件
    fmtSpec:指定数据格式;str
      #如果无法将fmtSpec与数据相匹配,只读取匹配的部分
    sizeA:指定A的形状;[m,n]或正整数(m,n均为正整数)
      #将文件光标定位到最后读取的值之后
      #按列顺序填充 A
    A:将数据读取到A中;默认为列向量,可通过sizeA更改形状
    count:读取到的字段数

#实例:
>> fileID = fopen('nums1.txt','r');
>> formatSpec = '%f';
>> A = fscanf(fileID,formatSpec)
A = 8×1

   81.4724
   90.5792
   12.6987
   91.3376
   63.2359
    9.7540
   27.8498
   54.6882
>> fclose(fileID);
>> fileID = fopen('nums2.txt','r');
>> formatSpec = '%d %f';
>> sizeA = [2 Inf];
>> A = fscanf(fileID,formatSpec,sizeA)
A = 2×5

    1.0000    2.0000    3.0000    4.0000    5.0000
    0.8147    0.9058    0.1270    0.9134    0.6324
#########################################################
[nbytes] = fprintf([fileID,]"fmtSpec",A1[,A2...]):将数据写入文本文件
  #参数说明:
    fileID:文件标识符,指定写入哪个;不传入时,直接在屏幕上显示结果
    fmtSpec:设置数据的格式;str
    A1,A2...:按列顺序将formatSpec应用于数组A1,A2...的所有元素
    nbytes:写入的字节数

#实例:
>> A1 = [9.9,9900];
>> A2 = [8.8,7.7;8800,7700];
>> formatSpec = 'X is %4.2f meters or %8.3f mm\n';
>> fprintf(formatSpec,A1,A2)
X is 9.90 meters or 9900.000 mm
X is 8.80 meters or 8800.000 mm
X is 7.70 meters or 7700.000 mm
#########################################################
status = feof(fileID):检测文件末尾
  #参数说明:
    fileID:指定文件,为文件标识符
    status:文件末尾指示符的状态
      #如果之前为文件设置了文件末尾指示符,返回1;否则,返回 0

六.逻辑数组
1.逻辑运算和变量
(1)关系运算符:

<:小于          <=:小于等于
>:大于          >=:大于等于
==:等于         ~=:不等于
结果为logical 1(true)/logical 0(false)

>> pi > 3
ans =
  logical
    1
#如果是char与str比较,会将char与str中的每个字符进行比较在返回结果
>> str1 = 'aarssadf';
>> 'a' == str1;
ans =
      1    1    0    0    0    1    0    0
#可将判断为true的位置变为指定值
>> str1(str1 == 'a') = 'Z'#'a' == str1成立的位置变为'Z'
str =
      ZZrssZdf

(2)对向量/矩阵与标量值进行比较:

Mr = M > x
#将矩阵的每个元素与标量值进行比较;返回每次结果构成的同型数组
#结果为m*n的 logical array

>> [5 10 15] > 12
ans =
  1 * 3 logical array
    0    0    1
>> [1 2;2 3] > 2
ans =
  2 * 2 logical array
    0    0
    0    1

(3)对两个同型数组进行比较:

ar = arr1 > arr2
#比较arr1与arr2中的对应元素;返回每次结果构成的同型数组
#结果为m*n的logical array

>> [1 2;2 3] > [1 1;1 1]
ans =
  2 * 2 logical array
    0    1
    1    1

2.组合逻辑条件—待补全

#逻辑运算符:
&:逻辑与
|:逻辑或
~:逻辑非
>> a = [0 2];
>> b= ~ a
b =
    1    0
xor(x,y):逻辑异或
>> xor(1,2)
ans =
  logical
    0  
bitxor(x,y):按位异或
&&:短路与
||:短路或

3.逻辑索引
(1)使用逻辑数组作为数组索引:

v = a0(a1的条件)
#提取满足条件的数组元素

>> a = [1 2 3 4 1];
>> a(a > 2)
ans =
     3    4
#当a1不是a0时,会提取a0中和a1中满足条件的元素具有相同索引的元素
>> b = [2 3 1 7 1];
>> a(b > 2)
ans =
     2    4

(2)使用逻辑索引在数组中重新赋值:

a0(a1的条件) = x
#将a0中满足条件的元素全部替换成x

>> a = [1 2 3 4 1];
>> a(a == 1) = 9
a =
    9    2    3    4    9
#当a1不是a0时,会修改a0中和a1中满足条件的元素具有相同索引的元素
>> b = [2 3 1 7 1];
>> a(b > 1) = 1
a =
    1    1    3    1    9
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个不错的Matlab的gui界面设计实例 精美日历 function CalendarTable; % calendar 日历 % Example: % CalendarTable; S=datestr(now); [y,m,d]=datevec(S); % d is day % m is month % y is year DD={'Sun','Mon','Tue','Wed','Thu','Fri','Sat'}; close all figure; for k=1:7; uicontrol(gcf,'style','text',... 'unit','normalized','position',[0.02+k*0.1,0.55,0.08,0.06],... 'BackgroundColor',0.6*[1,1,1],'ForegroundColor','b',... 'String',DD(k),'fontsize',16,'fontname','times new roman'); end h=1; ss='b'; qq=eomday(y,m); for k=1:qq; n=datenum(y,m,k); [da,w] = weekday(n); if k==d; ss='r'; end uicontrol(gcf,'style','push',... 'unit','normalized','position',[0.02+da*0.1,0.55-h*0.08,0.08,0.06],... 'BackgroundColor',0.6*[1,1,1],'ForegroundColor',ss,... 'String',num2str(k)); ss='b'; if da==7; h=h+1; end end uicontrol(gcf,'style','push',... 'unit','normalized','position',[0.6,0.66,0.12,0.08],... 'BackgroundColor',0.6*[1,1,1],'ForegroundColor',ss,... 'String','clock','fontsize',18,'fontname','times new roman'); Tq=uicontrol(gcf,'style','push',... 'unit','normalized','position',[0.74,0.66,0.17,0.08],... 'BackgroundColor',0.6*[1,1,1],'ForegroundColor',[0.1,0.9,0.9],... 'fontsize',18,'fontname','times new roman'); sq='The calendar'; uicontrol(gcf,'style','push',... 'unit','normalized','position',[0.14,0.86,0.37,0.08],... 'BackgroundColor',0.6*[1,1,1],'ForegroundColor',[0.1,0.9,0.9],... 'fontsize',18,'fontname','times new roman','string',sq); try while 1 set(Tq,'String',datestr(now,13)); pause(1); end end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值