Matlab精华笔记

Matlab精华笔记


0写在前面的话

Matlab只是一个工具,并不像理论知识那样需要完全掌握、深入研究,而且Matlab有完善的帮助文档,所以我认为学习Matlab只需要了解有哪些基本语法,有哪些功能至于如何实现我觉得完全可以交给百度和帮助文档。基于此观点,本文主要把Matlab的基本语法与C语言做对比、并且描述一些常用的函数。其他特殊的使用方法,可以在具体的项目中通过百度学习。这是自己最近学习的心得与大家分享一下,希望对大家有用。

1 Matlab基本语法-与C语言做对比

1.1 变量

1.1.1 变量命名规则

  • 变量命名与C语言一样,区分大小写且不能以数字开头(关键字查看命令 iskeyword )
  • 不用像C语言一样必须先定义再赋值,但是如果定义一个矩阵,并且在运行过程中大小经常发生变化,建议先定义(特别是在循环语句中

1.1.2 变量类型

​ 变量类型与C语言类似,但是添加了cell类型的变量

img

  • 元胞数组的使用

    • 创建图中所示cellimage-20210610173734388

    • 方法1: 直接创建

      A = { [1 4 3; 0 5 8; 7 2 9] 'Anne Smith' ;...
              3+7i -pi:pi:pi}
      
    • 方法2: 利用单元索引创建(得到是子元胞数组

      A(1,1)={[1 4 3; 0 5 8; 7 2 9]};
          A(1,2)={'Anne Smith'};
          A(2,1)={3+7i};
          A(2,2)={-pi:pi:pi};
      
    • 方法3: 利用内容索引创建(得到的是cellA对应区域的内容

    • A{1,1}=[1 4 3; 0 5 8; 7 2 9];
      A{1,2}='Anne Smith';
      A{2,1}=3+7i;
      A{2,2}=-pi:pi:pi;
      
    • 几种符号的区别

      符号符号作用
      A()表示数组的索引
      []表示这是一个数组
      A{}元胞数组的子元胞数组索引
  • 创建高维元胞数组
    image-20210610173905745

  • 利用cat进行cell拼接
    image-20210610173921431

1.1.2 变量显示

  • 变量显示命令
命令作用对应C语言的内容
format [显示格式]更改变量显示格式类似于printf里面的格式显示“%d”,
但是这里是Matlab全部变量显示的格式
添加;之后不显示运算结果C必须在每个语句后面加;
clear ([变量名])清除工作区内所有变量
(加了变量名,只清楚单个变量)
who/whos显示工作区所有变量(简易格式)/(复杂格式)
clc清除终端输出

1.2 数学运算符

  • Matlab运算符与C语言的不同

    运算符符号表示Matlab符号表示C区别
    乘法“.* “ 数组乘法(矩阵运算:按元素)
    “*” 矩阵乘法(线性代数)
    “*”如果是数值运算,这三个无任何区别,
    如果矩阵运算三个都不同
    除法“./” 数组右除 “‘.\’”数组左除
    "A/B" 求解线性方程组xA=B
    "B/A" 求解线性方程组Ax=B
    “/”与乘法类似
    ’“.^” “^”“^”与乘法类似
    取模运算(取余)mod(a,b)a%bMatlab 可以用于浮点数
    求余之后的正负符号不同
    Matlab与除数同号、C语言与被除数同号[1]
    自加、自减无专用运算符 可用a = a+1a++ 或 ++a
    强制类型转换double(a)(double)a使用方式不同
    其他类型转换见Help文件
    不等于~=!=
    逻辑与和或&/| =
    &&/|| 运算结果相同但是&&效率更高[2]
    &&、||
    按位运算bitand(a,b)
    bitor(a,b)
    a&b
    a|b

    注意:C语言的算数运算与显示的结果与运算的数据类型有关,而Matlab无关

1.3文件读写

命令作用
save(filename,variables,'-ascii')将变量variables以文本形式存入文件中
A= load(filename,'-ascii')从文本形式文件中读取数据
[num,txt,raw] = xlsread(filename,sheet,xlRange)读取Excel文件
xlswrite(filename,A,sheet,xlRange)写入Excel文件

注意:复杂的数据格式,如struct和cell,不支持以二进制格式存储.

1.4 结构化编程

Matlab流程控制语句C语言
if ,elseif,elseif ,else if,else
switch switch_expression
case case_expression
statements
case case_expression
statements …
otherwise
statements
end
switch(expression)
{
case constant-expression :
statements;
break; /* 可选的 /
case constant-expression :
statements;
break; /
可选的 /
/
您可以有任意数量的 case 语句 /
default: /
可选的 */
statements;
}
==特别注意如果没有使用break ,
则该条件后的所有statements都会执行
for index = values
statements
end
for ( init; condition; increment ) {
statement(s);
}
break,continue、rerun用法相同
执行并捕获产生的错误:
try
执行内容
catch MException
发生中断执行内容
end
paus 暂停程序

注意

Matlab不像C语言,条件判断表达式需要加()

Matlab需要使用...来拼接多行

1.5 函数

1.5.1 函数定义与C语言的不同

  • Matlab

    function [输出变量名] = 函数名(输入变量名)
    函数代码

  • C语言

    [返回值类型变量] 函数名([输入变量名])
    {

    函数体

    return 输出变量名

    }

  • Matlab内置函数参数

函数参数意义
imputname输入变量名列表
mfilename函数源代码文件名
nargin输入变量数
nargout输出变量个数
varargin可变长输入参数列表
varargout可变长输出参数列表

1.5.2 用函数句柄的形式来定义函数

函数句柄 = @(输入变量) 输出变量

例子:画出f(x)=e-2x的图像

f = @(x) exp(-2*x);

x = 0:0.1:2;

plot(x, f(x));

注意
Matlab中函数保存在.m文件中是,函数名必须与文件名相同
计算乘法时应尽量使用.*而非*,因为前者对于输入参数为矩阵的情况也可使用。

参考文献

[1]https://blog.csdn.net/qq_40537092/article/details/89609427

[2]https://jingyan.baidu.com/article/a24b33cdccd60319ff002b5d.html

内容来源:
MATLAB教程_台大郭彦甫(14课)原视频补档和评论区的笔记

MATLAB01:基本的数学运算与矩阵运算

MATLAB02:结构化编程和函数定义

声明:由于本人水平有限,难免会有错误,希望大家多多包涵,也欢迎批评指正

  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值