本文章采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本文章必须也遵循署名-非商业用途-保持一致的创作共用协议.
MatLab是综合高性能的数值计算软件, 集成了数值计算和可视化, 提供大量内置函数, 广泛用于科学计算等领域. Simulink是基于MatLab的框图设计环境, 用来对各种动态系统进行建模, 分析和方针. 学习目的: 为了完成当前作业和以为科研工作的需求
安装包请在MatLab官网进行下载和安装.
MatLab窗口>>
Matlab如果没有定义变量名, 系统将计算结果暂存在ans临时变量中.
优先级: 表达式从左向右运算, 指数运算优先级最高, 乘除次之(help precedence查看优先级)
常用操作命令
save my_var.mat % 保存工作区变量load my_var.mat % 加载文件中变量到工作区
运算符号
+ - * / \ ^ ' % 加 减 矩阵乘法 右除 左除 次方 矩阵共轭转置.* ./ \. .^ .' % 数组乘法 数组右除 数组左除 数组次方 矩阵转置 >> a = round(rand(3) * 10)a = 8 9 3 9 6 5 1 1 10>> b = magic(3) % 定义矩阵a和矩阵bb = 8 1 6 3 5 7 4 9 2>> c1 = a * b % 矩阵叉乘c1 = 103 80 117 110 84 106 51 96 33>> c2 = a .* b % 矩阵点乘, 矩阵对应元素位置的元素相乘c2 = 64 9 18 27 30 35 4 9 20>> e =a^2 % 矩阵的次方, 表示a * 2e = 148 129 99 131 122 107 27 25 108>> d = a.^2 % 矩阵的乘方, 矩阵中每个元素二次方d = 64 81 9 81 36 25 1 1 100>> format short, pi % format用于更改显示的输出格式ans = 3.1416>> format long, pians = 3.141592653589793>> iskeyword % 查询关键字ans = 'break' 'case' 'catch' 'classdef' 'continue' 'else' 'elseif' 'end' 'for' 'function' 'global' 'if' 'otherwise' 'parfor' 'persistent' 'return' 'spmd' 'switch' 'try' 'while'>> class(a) % 获取定义的数据类型ans =double>> a = cast(a, 'uint8') % 改变数据类型a = 8 9 3 9 6 5 1 1 10>> class(a)ans =uint8
带.的运算方式表示对矩阵元素的运算, 矩阵的右除是一般意义的除法, a./b = b.\a
MatLab默认的输出格式为双精度(double)
变量
数组作为Matlab存储和运算的基本单元
数组创建
>> a = [1 2 3] % 直接创建, 以空格或者逗号隔开a = 1 2 3>> a = 0 : 1 : 3 % x = a:inc:b a和b为起始数和终止数, inc为间隔步长a = 0 1 2 3>> a = linspace(1, 3, 3) % 等间距线性创建法, a = linspace(a, b, n), 在a和b区间取n个点a = 1 2 3>> a = logspace(1, 3, 3) % 等间距对数创建法a = 10 100 1000
数组访问
a = 10 100 1000>> a(2) % 索引访问, 从1开始ans = 100>> a(2 : 3) % 按块访问ans = 100 1000>> a(2 : end)ans = 100 1000
多维数组
新建变量的窗口, 更改变量名, 插入数据导入数据导入工作空间常用标准数组
>> a = -3:3a = -3 -2 -1 0 1 2 3>> k = find(a > 0) % 找到符合条件的下标k = 5 6 7>> sort(a) % 对数组排序ans = -3 -2 -1 0 1 2 3
字符串是用单引号括起来的一系列字符的组合
>> str = 'hello world' % 定义字符串str =hello world>> size(str) % 查看字符串的大小ans = 1 11>> u = mat2str(pi * eye(2)) % 将矩阵转化为字符串u =[3.14159265358979 0;0 3.14159265358979]>> class(u)ans =char>> disp(u) % 打印字符串[3.14159265358979 0;0 3.14159265358979]>> size(u)ans = 1 39>> t = 23 >> tempText = [ 'Temperature is ', num2str(t), 'C'] # 字符串的拼接, 使用num2str将数字转换为字符串tempText =Temperature is 23C
关系运算符主要比较两个同维数的数组的大小
常用函数列举
chol(A) % 对矩阵A进行Cholesky分解det(A) % 矩阵A的行列式eig(A) % 矩阵A的特征值和特征向量inv(A) % 矩阵A的逆svd(A) % 矩阵A的奇异值eye(r, c) % 生成r * c的单位矩阵magic(n) % 生成n*n的魔幻矩阵ones(r, c) % 生成r*c的全1矩阵rand(r, c) % 生成r*c的元素值0和1之间的随机矩阵zeros(r, c) % 生成r*c的全0矩阵cond(A) %利用奇异值分解求矩阵A的范数
求行列式
>> for i = 1:3A = magic(i + 2)a(i) = det(A) % 矩阵行列式disp('矩阵:') % 打印字符串 disp(A)disp('矩阵的行列式')disp(a(i))end
稀疏矩阵
>> a = [0 0 0 5; 0 1 0 0; 1 5 0 0; 0 0 0 3]a = 0 0 0 5 0 1 0 0 1 5 0 0 0 0 0 3>> as= sparse(a) % 创建稀疏矩阵as = (3,1) 1 (2,2) 1 (3,2) 5 (1,4) 5 (4,4) 3>> af = full(as) % 还原矩阵af = 0 0 0 5 0 1 0 0 1 5 0 0 0 0 0 3
恰定方程组是方程组个数和未知数个数相同的方程组, 使用左除求解.
Matlab可以像C一样编程, 编写执行命令的 脚本 和函数功能的模块, 文件以.m为后缀
打开M文件编辑器:
edit filename命令% 一个简单的脚本文件echo on % 脚本文件内容显示在命令窗口t = 0 : pi/20 : 2 *pi;num = input('输入数字:'); % 提示用户输入内容disp(num); % 显示结果echo off %关闭命令行显示
for循环
for x = array % x为循环变量, array是条件数组 commands % 循环执行的代码end % examplefor i = 1: 1: 10 a(i) = sin(i * pi /5)enda % 输入a
while循环
while expression commandsend % examplenum = 10;while num >1 num = num / 2end
if条件结构
if expression commandselseif commandselse commandsend
switch分支选择结构
switch expression case test_expression1 commands1 case test_expression2 commands2 otherwise commands3end % examplex = input('输入需要换算的长度数值cm:');unit = input('选择转换单位 (1 in, 2 ft, 3 m. 4 mm, 5 cm):');switch unit case {'inch', 'in', 1} y = x * 2.54; case {'feel', 'ft', 2} y = x * 2.54 / 12; case {'meter', 'm', 3} y = x / 100; case {'centermeter', 'cm', 4} y = x; case {'milimeter', 'mm', 5} y = x * 10; otherwise disp('Unkonwn Units'); y = NaN;enddisp(y)
try-catch结构
try用于捕获try后语句的异常, 交给catch语句处理异常
try commandscatch commandsend % examplex = rand(4 ,2)y = magic(3)try z = x * ycatch z = NaN disp('两矩阵维数不同, 计算错误!')enddisp(lasterr)disp(lasterror)
continue,break,return关键字的应用场景与其他语言基本相同
M函数文件与M脚本文件的不同:
绘制函数𝑦=𝑒𝑥/3𝑠𝑖𝑛𝑒𝑥(𝑥) y=e x / 3 sinex(x) 在区间[0,4π] [0,4 π ] 的曲线
function y = sinex(x)% sinex.my = exp(-x / 3).*sin(3 * x) % 命令行调用函数>> fh = @sinex>> ezplot(fh, [0, 4 * pi, -1, 1]);
Matlab所有函数都有详细的帮助文档, 通过一下的方式可以更好的使用文档:
doc functionname(完整的文档)functionname(程序进进行智能文档提示(速度慢)help mean(简单的文档)
作者:Andrew_liu
链接:https://www.jianshu.com/p/fcf5199cfd2b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删