原文地址:Matlab与数学计算 - Pleasure的博客
下面是正文内容:
前言
这是一篇笔记。主要用于介绍MatLab的作用以及其作为数学工具的使用方法。
目的是总结学校课件复习自用,但是不可能像相关的书籍那么系统全面,力求简单明了。都是一些最基础的用法,更近一层的深入需要特定的环境和实例。
MatLab是一种高级技术计算语言和交互式环境,用于算法开发、数据可视化、数据分析和数值计算。使用场景有:复杂数学问题的统计与计算,国赛美赛时的数学建模,模电的绘制与测试,嵌入式系统开发的编写,应用程序的开发等等。
Matlab是Matrix Laboratory的缩写,其设计初衷是用于科学和工程领域的计算和仿真。国内外绝大多数的高校都会用到。主要用于学术环境。
但是作为一款高级计算软件,个人评价是:MatLab就好像需要用涂卡笔作答一样——存在,但是可能可以被2B铅笔替代。
正文
下面正式开始,虽然官方发布过MatLab Primer指导用书,但毕竟是纯英文的。就不附带链接了。
基本函数
clear——Delete all variables in the current Workspace
clc——Clear the Command Window without deleting assigned variables
who——查看现有变量
whos——查看变量细节
help——查看特定函数的帮助
doc——调用MATLAB帮助中心
自然对数e——用exp(1)替代,exponential
余数——rem(x),remainder after division
共轭复数——conj(x),complex conjugate
%——格式化操作符
f——转换字符
\n——换行
%.2f——表示将浮点数数值格式化为带有两位小数的字符串
向量
0维数组是标量(scalar),1维数组是向量(vector),二维数组是矩阵(matrix)
索引向量的函数
length(x)——返回向量中数的个数,
v‘——返回转置向量(比如行列向量转换),
v(i)——返回向量的第i个数
构造向量的函数
等间隔向量——开始值:步长:终止值 或linspace(StartValue,EndValue,PointNumber)都能实现。比如-10:1:10或linspace(-10,10,21)输出[-10,-9,-8,…,0,1,2,…,10]。
矩阵
Function | Meaning |
eye(m,n) | 生成对角线为1,其余为0的m-n单位矩阵。Return an m-by-n matrix with 1 on the main diagonal。 |
eye(n) | 生成对角线为1,其余为0的正方形单位矩阵。Return an n-by-n square identity matrix。 |
zeros(m,n) | Return an m-by-n matrix of zeros |
ones(m,n) | Return an m-by-n matrix of ones |
rand(m,n) | 返回在0-1间随机的m-n矩阵。Return an m-by-n matrix of random numbers between 0 and 1。 |
magic(n) | 用于生成幻方矩阵。Use help command to see its meaning by yourself。 |
构造矩阵的函数
索引矩阵的函数
假设一个5行6列的矩阵M
M(2,:)——M的第二行
M(:,2)——M的第二列
M(2:4,:)——M的第二到四行
sum(sum(M))——M中所有元素的和
M(2,:)= [] ——删除M第二行的元素
size(M)——返回矩阵M的维度,即[5,6]
操作矩阵的函数
A‘——转置矩阵,
inv(A)——逆矩阵(与原始矩阵相乘得到单位矩阵),
det(A)——矩阵的行列式(线性变换下所引起的缩放因子,[a,b;c,d] det(A)=ad-bc)
A^2——加上inv,det只能适用于方阵
A*B——两个矩阵的点乘,大小必须相同
A.*B——AB大小相同,矩阵中逐个元素相乘
A.^B——逐个元素求幂
画图
plot(x,y,'r:')
需要用到上面操作矩阵的函数,最简单的示例,注意这里的“.”不能落下!
x = linspace(-2,2);
y = x.^3+2*x.^2-4*x-5;
plot(x,y)
“r:”代表规则,
对于叠加图,在r:部分附上不同的规则
plot(x,y1,'r--')
hold on
plot(x,y2,'r:')
hold off
逻辑表述
逻辑数组
0代表错误,1代表正确,
比如,a=1:5
b=a>=3,将结果赋值给b,b=00111
a(b)使用b作为显示元素,a=345
for while结构的迭代嵌套等,示例代码
claer;clc
n = 10;
A = zeros(n,n);
for i = 1:n
for j = 1:n
A(i,j) = n*(i-1)+j;
end
end
disp(A)
index = ~isprime(A);
A(index) = 0;
disp(A)
自定义函数
通过MATLAB事先内置的函数,进行重构
与依赖input output等用户交互的脚本不同,用户自定义函数一般在脚本中直接使用
函数变量的命名不能使用空格,最好写在脚本的开头并附带注释
尾声
对于MATLAB实在不知道能说些什么,就当我说了一堆废话