许可优化
产品
解决方案
服务支持
关于
软件库
当前位置:服务支持 >  软件文章 >  MATLAB编程基础笔记分享

MATLAB编程基础笔记分享

阅读数 62
点赞 0
article_banner

[本文来自本人的公众号,感兴趣的可以关注,定期发布一些技术文章]

由于在有道云笔记中编辑的文档直接导入后会有部分不兼容的情况(比如说目录失效了...),大家注意一下下。








MATLAB 编程基础笔记

前言

写下本文的目的是帮助自己或者他人在想用 MATLAB 来完成一些任务时,能够快速熟悉并上手,起到入门教程的用途。

正文

数据类型

MATLAB 基础数据类型主要包括:

  • 数值类型
  • 字符串
  • 结构
  • 单元数组
  • 函数句柄

1. 数值类型

包含:

  • 整数
y = int8(10);
y = uint8(10);
% 类似的还有int16, uint16, int32, uint32, int64, uint64
  • 单精度浮点型
% 单精度浮点型
y = single(0.1);
  • 双精度浮点型(默认)
y = double(5.324);

注:MATLAB 会对变量自动进行内存分配和回收,因此专注于算法本身即可。

  • 取整函数
% 向下取整
floor(1.4) = 1
% 向上取整
ceil(1.4) = 2
% 最接近的整数
round(1.5) = 2
% 向0取整
fix(1.4) = 1
  • 复数
y = complex(3,5);
% 返回实部
y = real(z);
% 返回虚部
y = imag(z);
  • 无穷量和非数值量

Inf:正无穷量

-Inf:负无穷量

NaN:非数值量(一般由0/0或Inf/Inf 运算产生)

2. 字符与字符串

% 字符
a = 'A';
% 字符串
a = 'Hello';
% 通过下标索引,从1开始
a(1);

3. 结构

与 C 语言类似,存储不同类型数据。

% 通过赋值创建结构
patient.name = 'John';
patient.bill = 127.00;

% 通过 struct 函数创建结构
patient = struct('name','John','billing', 127.00);

% 连接结构对象(patient1 和 patient2 都是结构对象)
patient = [patient1, patient2];

4. 单元数组

% 创建单元数组
A = {'x',[2;3;6];10,2*pi};
B =cell(2,2);

% 访问单元数组,第1行第2列数据
b = A(1,2)

5. 函数句柄

创建函数句柄需要用到操作符:@

% Function_Handle保存了函数句柄
% Function_Filename为 M 文件名称
Function_Handle = @Function_Filename;

6. 数据类型识别与转换

% 类型识别
isa(obj,ClassName)
iscell();
iscellstr();
ischar();
...
% 转换函数
char();
int2str();
dec2bin();
hex2dec();
...

运算符与运算

像其他语言一样,共有(优先级由高到低):

  • 算术运算符
  • 关系运算符
  • 逻辑运算符

加括号可以明确优先级!

1. 算术运算符

基础的: + - * /

高阶的: A./B A.*B(A,B为相同维度的矩阵)

强大之处: matlab支持大部分数学运算符,直接输入表达式即可,无需调用特定的数学函数。 举例来说:

% 以下两种方式等价:
2^3
power(2,3)

2. 关系运算符

比较后,返回逻辑结果0或1.

基础的: > >= < <= ==

特殊的: 不等于号:~=

3. 逻辑运算符

运算后,返回逻辑结果0或1.

基础的:

  • 与:&
  • 或:|
  • 非:~

编程基础

1. 变量

变量代表了一段可操作的内存,用来存储数据。

语句代表了对变量执行的操作。

命名规则:

  • 区分大小写
  • 必须以字母开头
  • 不能使用关键字
  • 最多包含63个字符
  • 避免与函数名重合

变量类型:

  • 局部变量
  • 全局变量
global X_Val;
  • 永久变量
persistent a;

2. 语句

  • 逗号 , 输出暂缓
  • 分号 ; 输出被抑制
  • 回车 输出结果
  • 注释 %

3. 程序控制

  • 顺序结构
  • 分支结构
% if 类型
if expression
    commands
end

if expression
    commands1
else
    commands2
end

if expression1
    commands1
elseif expression2
    commands2
...
else
    commandsn
end
% switch case 类型
switch value 
    case test1
        command1
    case test2
        command2
    ...
    
    otherwise
        commands
end
% try catch 类型
try 
    command1  % 首先尝试执行,若正确,可执行
catch 
    command2  % try 语句失败后执行
end
  • 循环结构
% for 类型(循环次数可知)
for x = array
    commands
end
% while 类型(循环条件可知)
while expression
 commands
end
  • 其他常用控制指令
    • return 命令:结束该函数并将控制权转回主函数或者命令行窗口
    • input 命令:将控制权交给用户后,等待用户键盘输入内容
    • keyboard 命令:将控制权交给键盘
    • pause 命令:暂停执行文件,按任意键再继续
    • pause(n) 命令:暂停 n 秒后再继续
    • continue 命令:执行 for 或者 while 的下一个循环
    • break 命令:跳出 for 或者 while 循环
    • error('message') 命令:显示出错信息,终止程序
    • warning('message') 命令:显示警告信息,继续执行


4. M 文件与脚本

脚本的特点:

  • 脚本属于 M 文件的一种,是一系列命令的集合
  • 运算过程中产生的变量自动保存在工作区中
  • 脚本产生的变量都是全局变量,不随脚本关闭而清除

函数

M 文件名称和函数名称必须一致

M 文件函数:定义了输入参数或返回输出变量

1. M 文件函数

  • 调用时,允许比声明变量数目少
function y = mean(x,dim,flag,flag2)
...
% 实际调用
X = [1 2 3]
y1 = mean(X)
y2 = mean(X,2)
  • 函数运行时,MATLAB 会打开一段临时工作区供函数使用,执行完成后回收

2. 匿名函数

没有函数名,只有表达式、输入输出参数。

% f 为函数句柄
f = @(input1, input2, ...) expression
% 调用
f(input)

3. 子函数

也称局部函数。

M 函数文件出现的第一个函数称为主函数,其他称为子函数。

function [outputArg1,outputArg2] = myfun(inputArg1,inputArg2)
%   此处显示详细说明
outputArg1 = inputArg1;
outputArg2 = myadd(inputArg2);
end

% 以下为子函数
function y = myadd(inputArg3)
y = inputArg3 + 1;
end

4. 程序调试

程序错误分为:语法错误(编译器会提醒)和逻辑错误(程序员负责解决)。

调试手段小结

  • 删除分号可以显示结果
  • 在适当位置添加输出变量值,可以用 disp 或者 fprintf 函数
  • 在适当位置添加 keyboard 命令
  • % 可用于屏蔽代码
  • 使用 MATLAB 自带的调试工具
    • 设置断点
    • 单步执行
    • 检查变量值



修订记录

由于内容较多,受篇幅限制,很多知识点不一而足,故制定版本记录,后续有需要再做更新。

日期内容2020-4-19初版内容发布----


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...

相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空