【数学建模】MATLAB学习笔记

目录

Matlab基础语法

MATLAB&EXCEL工程计算

MATLAB基础

3.1 MATLAB界面

3.2 利用命令窗口进行交互计算

3.3 MATLAB脚本文件的使用

3.4 MATLAB函数文件的使用

3.5 一维数组的使用

3.7 二维数组的使用

3.8 保存MATLAB会话过程

MATLAB编程

4.2 循环命令

for循环

while循环

4.3 逻辑判断语句

if语句

添加else和elseif条件

4.5 MATLAB输出结果的格式设置

清风数学建模 MATLAB语法基础

基本小常识

输出和输入函数

disp函数

input函数

sum函数

提取矩阵中指定位置的元素

size函数

repmat函数

Matlab中矩阵的运算

Matlab中求特征值和特征向量

find函数

代码防查重技巧


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,选择全部替换

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值