目录
Matlab基础语法
% 注释语句以“%”开头,按ctrl+R来注释,按ctrl+T来取消注释;
% 语句后加分号,则工作区不显示运行结果,一般不加分号,则会在工作区显示运行结果
clear;clc % 前者是清除工作区的所有变量,后者是清除所有文本,像这句这样一起使用,就相当于初始化
%Matlab的输入输出函数的格式与Python的一样
disp('文本')
A=input('文本')
MATLAB&EXCEL工程计算
MATLAB基础
3.1 MATLAB界面
-
命令窗口:输入需要执行的计算命令,可以马上显示结果;
-
工作区窗口:显示在命令窗口定义的变量;
3.2 利用命令窗口进行交互计算
-
在交互计算模式,可以把MATLAB当作一个科学计算器:
运算 | 运算符 |
加法 | + |
减法 | - |
乘法 | * |
除法 | / |
指数 | ^ |
-
MATLAB中常用的初等函数
注:
圆周率用pi来表示。命令行窗口只显示三位小数,可以输入 format long 设置长格式保留十五位小数,之后可以输入 format short 恢复到原来的默认格式。
在命令行使用help+某函数的关键字,即可查看该函数的使用方法。
3.3 MATLAB脚本文件的使用
-
新建脚本文件要对界面左边部分右击鼠标创建,而不能直接点上方的创建;
-
脚本文件必须是一个单词,必须以英文字母开头,中间可以有下划线;
-
用输入函数input来设置一个哑命令,比如:input('请按下Enter键') ,这样来充当一个缓冲;
3.4 MATLAB函数文件的使用
-
自定义一个函数
function A=area_rect(base,height)
% 定义函数都要以function开头,其后跟一个赋值式,赋值号左边是函数返回值,右边是函数名和参数;
A=base*height;
% 这个文件的名字要和函数名一样,这样接下来就可以直接调用该函数。
3.5 一维数组的使用
-
一维数组即为一维矩阵,包括行数组和列数组,其下标从1开始;
-
数组长度可变,只需给后面的数组位置赋给确定的值,之前没有赋值的位置则全为0;
-
以数组的多个元素作为返回值的函数:
function AP=area_perim(base,height)
AP(1)=base*height;
AP(2)=(2*base)+(2*height);
-
以一个数组作为参数的函数:
function AP=area_perim(Dimensions)
AP(1)=Dimensions(1)*Dimensions(2);
AP(2)=Dimensions(1)*2+Dimensions(2)*2;
3.7 二维数组的使用
二维数组即为二维矩阵。
3.8 保存MATLAB会话过程
% 当工作区存在三个变量:a=1,b=2,c=3时,有以下操作:
clear a %只清除变量a
save bc %将剩下的变量b和c保存在名为bc的文件里
clear %清除工作区
load bc %将文件bc里的变量恢复到工作区
save bc b %只将变量b保存到文件bc里
quit %退出MATLAB
MATLAB编程
4.2 循环命令
for循环
a=0;
for m=1:10 % m的初始值为1,每轮循环后加1,直到m为10时终止循环
disp(m) % 每次都输出m的值
end %for循环的计数变量在关键字for后,中间的循环体全部都要缩进,最后用end充当大括号
while循环
a=10;
while a>0
disp(a)
end
4.3 逻辑判断语句
if语句
a=10;
if a>1&aa<20; %MATLAB里的“与”和“或”都只写一个符号
a++
end; %if语句也要用end结尾,if语句可嵌套,只要缩进好,不用大括号
添加else和elseif条件
y=input('Enter a number between 1 and 10:');
if y>10
fprintf('The number is too high.It will be changed to 10\n')
y=10;
elseif y<1
fprintf('The number is too low.It will be changed to 1\n')
y=1;
else
fprintf('The number is in the range\n')
end
4.5 MATLAB输出结果的格式设置
-
fprintf输出命令的格式:
-
将输出数据保存到文本文件里
% 在程序开头就写下面这句:
fid=fopen('filename.txt','wt');
% 给属性为wt的文本文件filename.txt起一个别名fid,程序之后输出的数据都保存到该文本文件中
fprintf(fid,'x y z\n');
fprintf(fid,'=======\n');
% 这两行表示往文本文件里写入两行信息,之后的输出也要在括号里先写文件别名
清风数学建模 MATLAB语法基础
基本小常识
1. 注释快捷键
多行注释 | Ctrl + R |
取消注释 | Ctrl + T |
2. 分号
在一行语句的后面加上分号,表示不显示这行的运行结果。
输出和输入函数
disp函数
1. 关于向量
a = [ 1 , 2 , 3 ] 和 a = [ 1 2 3 ] 用disp输出结果是一样的。
2. 关于分号
disp语句后面加不加分号都会输出。
3. 关于字符串
(1)Matlab中两个字符串合并的两种方法
1. strcat ( '字符串1' , '字符串2' )
2. [ '字符串1' , '字符串2' ]
(2)常用的字符串函数:num2str 将数字转换为字符串
c = 100
num2str(c)
disp(['c的取值为' num2str(c)])
input函数
%一般我们会将输入的数、向量、矩阵、字符串等赋值给一个变量,这里我们赋给A
A = input('请输入A:');
sum函数
1. 如果是向量,无论行列都是直接求和
E = [1,2,3]
sum(E)
E = [1;2;3]
sum(E)
2. 如果是矩阵,则需要根据行和列的方向作区分
a = sum(X)
a = sum(X,1) %按列求和,得到一个行向量
a = sum(X,2) %按行求和,得到一个列向量
a = sum(sum(X))
a = sum(X(:)) %对整个矩阵求和
提取矩阵中指定位置的元素
% (1)取指定行和列的一个元素(输出的是一个值)
clc;A=[1 1 4 1/3 3;1 1 4 1/3 3;1/4 1/4 1 1/3 1/2;3 3 3 1 3;1/3 1/3 2 1/3 1];
A
A(2,1)
A(3,2)
% (2)取指定的某一行的全部元素(输出的是一个行向量)
clc;A
A(2,:)
A(5,:)
% (3)取指定的某一列的全部元素(输出的是一个列向量)
clc;A
A(:,1)
A(:,3)
% (4)取指定的某些行的全部元素(输出的是一个矩阵)
clc;A
A([2,5],:) % 只取第二行和第五行(一共2行)
A(2:5,:) % 取第二行到第五行(一共4行)
A(2:2:5,:) % 取第二行和第四行 (从2开始,每次递增2个单位,到5结束)
1:3:10
10:-1:1
A(2:end,:) % 取第二行到最后一行
A(2:end-1,:) % 取第二行到倒数第二行
% (5)取全部元素(按列拼接的,最终输出的是一个列向量)
clc;A
A(:)
size函数
clc;
A = [1,2,3;4,5,6]
B = [1,2,3,4,5,6]
size(A)
size(B)
% size(A)函数是用来求矩阵A的大小的,它返回一个行向量,第一个元素是矩阵的行数,第二个元素是矩阵的列数
[r,c] = size(A)
% 将矩阵A的行数返回到第一个变量r,将矩阵的列数返回到第二个变量c
r = size(A,1) %返回行数
c = size(A,2) %返回列数
repmat函数
% B = repmat(A,m,n):将矩阵A复制m×n块,即把A作为B的元素,B由m×n个A平铺而成。
A = [1,2,3;4,5,6]
B = repmat(A,2,1)
B = repmat(A,3,2)
Matlab中矩阵的运算
% MATLAB在矩阵的运算中,“*”号和“/”号代表矩阵之间的乘法与除法(A/B = A*inv(B))
A = [1,2;3,4]
B = [1,0;1,1]
A * B
inv(B) % 求B的逆矩阵
B * inv(B)
A * inv(B)
A / B
% 两个形状相同的矩阵对应元素之间的乘除法需要使用“.*”和“./”
A = [1,2;3,4]
B = [1,0;1,1]
A .* B
A ./ B
% 每个元素同时和常数相乘或相除操作都可以使用
A = [1,2;3,4]
A * 2
A .* 2
A / 2
A ./ 2
% 每个元素同时乘方时只能用 .^
A = [1,2;3,4]
A .^ 2
A ^ 2
A * A
Matlab中求特征值和特征向量
% 在Matlab中,计算矩阵A的特征值和特征向量的函数是eig(A),其中最常用的两个用法:
A = [1 2 3 ;2 2 1;2 0 3]
% (1)E=eig(A):求矩阵A的全部特征值,构成向量E。
E=eig(A)
% (2)[V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。(V的每一列都是D中与之相同列的特征值的特征向量)
[V,D]=eig(A)
find函数
% find函数,它可以用来返回向量或者矩阵中不为0的元素的位置索引。
clc;X = [1 0 4 -3 0 0 0 8 6]
ind = find(X)
% 其有多种用法,比如返回前2个不为0的元素的位置:
ind = find(X,2)
%上面针对的是向量(一维),若X是一个矩阵(二维,有行和列),索引该如何返回呢?
clc;X = [1 -3 0;0 0 8;4 0 6]
ind = find(X)
% 这是因为在Matlab在存储矩阵时,是一列一列存储的,我们可以做一下验证:
X(4)
% 假如你需要按照行列的信息输出该怎么办呢?
[r,c] = find(X)
[r,c] = find(X,1) %只找第一个非0元素
代码防查重技巧
国赛代码会查重,美赛不会。
1. 疯狂加注释,有时间的话每段都加,这样就可以稀释掉相似的代码
2. 选择一个变量,按Ctrl+F,选择全部替换