【数学建模】matlab的基本用法讲解

0. MALLAB的安装包及安装方法

MALLAB的安装

1. MATLAB界面与基本操作

MATLAB界面与基本操作

初始界面:
初始界面
刚开始的界面只要一个命令行窗口,为了使编辑界面出现我们需要新建一个文件,注意存放文件的文件夹一定要是英文命名,新建文件后打开就会出现编辑器。新建完文件后,点击左上角的新建脚本就会弹出编辑器了。
编辑器

1.1 MATLAB的基本操作

  1. 在命令行中输入指令
  • 输入完成指令后,敲回车就执行。
  1. 在脚本文件中编写程序后运行
  • 脚本文件,就是存放代码的文件,尾缀.m
    脚本文件

当你在脚本文件中写完代码后,如果你要运行就要先保存一次文件。运行后结果会显示在下方的命令行窗口,同时右侧的工具区也会显示变量的值,有点类似vs2022调试后的监视窗口

  • 实时脚本文件,可插入图片,运行时会把结果显示在代码旁边,很适用。
    实时编辑器

点击左上角的新建里面就会有一个实时脚本文件,运行时会把结果显示在代码旁边,不会再下命令行中显示。

  1. 在函数文件中编写程序,然后在脚本文件中调用
  • 函数文件相当于做好一个工具,以后到了需要的时候直接调用就可以了,尾缀也是.m
  • 有固定的格式,例如:function[sigma,theta,x,y,final_res] = simple(f,a,b,index)
  1. 符号
  • 注释:%后面写的内容都是注释,类似于C/C++的//或者python的#
  • 分号:写完一行代码,该行末尾加个分号,会被执行计算,但不会在命令行窗口显示输出
  • 命令行输入:clc(清空命令行),clear(清空工作区),按上方向键调用历史命令,有点类似Linux操作。

在实时脚本文件中,通过运行节可以实现代码的分段运行。
实现代码的分段运行

2. MATLAB字符串和文本

2.1 string变量

  1. 双引号(英文的)
    当我们要定义一个字符串变量时,可以写
t = "hello world"

和C语言的语法也没啥区别。
如果字符串中本质需要右双引号,这就和C语言的处理方法不同了,我们需要加上双重双引号

t = "hello ""haha"" world"

这样的话,t就会等于hello "haha" world
2. 字符串和数组的区别
tmp = 1+1,运行结果是2
tmp = “1+1”,运行结果是1+1
3. 字符串添加数据

a = t+"haha"

矩阵存储多个元素

b = ["a","bb","ccc","dddd"]

演示:
矩阵存储多个元素

2.2 char变量

  1. 单引号
    字符串表示的数据并不对于到文本,例如:
tmp = 'hellomatlab'

char变量

运行出来的结果是1X11,如果是字符串这里会是1X1。也就相当于这是一个字符数组。

如果字符串本身右单引号,则在单引号位置使用双重单引号
如果需要选择第4个字符:

s = tmp(4)
%s就会等于l

MATLAB的数组下标是从1开始的,同时也不能越界访问。

  1. 添加内容
    使用方括号把多个字符数组串联起来
tmp2 = [tmp,'haha']

注意:双引号得到是是1个string变量,单引号得到是是多个char变量

3. MATLAB的矩阵运算

  1. 创建一个1行6列的矩阵:
a = [1 3 5 7 9 11]
  1. 对矩阵中的每个元素都加上3
b = a+3

正常在线性代数的课程都会讲,矩阵的相加只能是同类型的矩阵,所有这里MATLAB会将3变一个充满的3的和a同类型的矩阵相加。
演示:
演示

  1. plot函数绘图,以索引为横坐标,索引就是该数组在矩阵里的第几个类似于数组下标
plot(b)
grid on %在图片中添加网格线

演示

  1. 多维矩阵的创建,以空格或逗号分割同一行元素,分号分割各行.
    常见运算:转置、取逆、求特征值会特征向量
a = [3 2 1;2 4 1;3 9 2]
b = a' %求转置
[d,v] = eig(a)  %求特征值和特征向量
e = inv(a) %求逆矩阵
f = a*e %求证,逆矩阵乘矩阵会得到1

演示:
演示

  1. 矩阵乘法,和矩阵点乘
c = a*b  %矩阵乘法
e = a.*b %矩阵点乘,对应元素相乘

演示:
演示
6. 使用矩阵a对方程a*x = b求解,方法是使用\运算符即a的逆矩阵乘矩阵b

b = [1;3;5]
x= a\b
%验证,如果成立s会等于0
s = a*x-b

a的逆矩阵乘矩阵b

  1. 如果一个操作数是标量,而另一个操作数不是标量,那么MATLAB会把该标量隐式扩展为另一个操作数具有相同的大小。
h = [1,1,1;2,2,2;3,3,3]
k = 4

l = k*h % 运算时,k会变成3*3的对角矩阵,对角线元素都是4
m = k+h % 运算时,k会变成3*3的矩阵,每个元素都是4
  1. 不同维度的行向量和列向量相加
    尽管在现实中的线性代数中是不可以进行这样的运算的,但是在MATLAB中会隐式扩展,将它们扩展乘可以相加的同类型矩阵。
n = [1,2,3,4]
p = [5;6;7]
q = n+p

对矩阵的扩展:n从1行4列的矩阵扩展成3行4列的矩阵,且扩展出的两行和原来数据相同,p同理。
对矩阵的扩展

4. 利用MATLAB作二维图

4.1 线图

plot函数用来创建x和y的简单线图

x = 0:0.05:30; %从0到30,每隔0.05取一次值
y = sin(x);
plot(x,y) %如果觉得线太细了,(x,y,'LineWidth',2),可变粗
xlabel("x轴标题")
ylabel("y轴标题")
grid on %显示网格线
%axis([0 20 -1.5 1.5]) %设置横纵坐标范围

线图

演示:改变横纵坐标范围
改变横纵坐标范围

多组数据显示在同一张图

y1 = sin(x);
y2 = con(x);
plot(x,y1,x,y2)

4.2 条形图

bar函数创建垂直条形图
barh函数创建水平条形图

t = -3:0.5:3;
p = exp(-t.*t); %表示e的(-t)平方
bar(t,p) %垂直条形图
barh(t,p) %水平条形图

条形图

4.3 极坐标图

polarplot函数用来绘制极坐标图

theta = 0:0.01:2*pi;%pi表示π
radi = abs(sin(7*theta).*cos(10*theta));%abs是取绝对值或复数的模
polarplot(theta,radi)  %括号是内是弧度和半径

极坐标图

4.4 散点图

scatter函数用来绘制x和y值得散点图

height = randn(1000,1);
weight = randn(1000,1);
scatter(height,weight)
xlabel('height')
ylabel('weight')

 散点图

5.利用MATLAB作三维图

5.1 三维曲面图

surf函数可用来做三维曲面图。一般是用来展示函数z = z(x,y)得图像
首先需要用meshgrid创建好空间(x,y)点。

[x,y] = meshgrid(-2:0.2:2);
% z = x.^2+y.^2
z = x.*exp(-x.^2-y.^2);
surf(x,y,z);

利用MATLAB作三维图

5.2 子图

使用subplot函数可以在同一窗口得不同得区域显示多个绘图

theta = 0:0.01:2*pi;
radi = abs(sin(2*theta).*cos(2*theta));
height = randn(1000,1);
weight = randn(1000,1);

subplot(2,2,1);surf(x.^2);title('1st');
subplot(2,2,2);surf(y.^3);title('2nd');
subplot(2,2,3);polarpolt(theta,radi);title('3rd');
subplot(2,2,4);scatter(height,weight);title('4th');

子图

6. MATLAB导入数据

最常用的就是excel表格导入文件,主页选项卡-导入数据-选择excel文件
导入的范围默认是第二行开始,第一行一般是标题行。
如果不想导入所有数据,可以按住CTRL键,选择想导入的内容,例如某行、某列
变量名称行”也就是导入之后,MATLAB里表格最上方会显示变量,一般默认选择源文件第一行,但是只能识别英文,如果是汉字则会变成“VerName”
导入类型
“输出类型”决定了导入的数据以什么类型存。一般选择表,如果选择“数值矩阵”那么所有字符串都变成NaN,反之也是。
注意,导入后数据在工作区,关闭MATLAB后数据会消失,如果想保存数据的话,记得保存工作区数据。

7. MATLAB处理缺失值和异常值

清理缺失数
实时编辑器。选择任务>清理缺失数据
首先,先写一组包含缺失值和异常值的例子。

x = 1:100;
% randn(1,100)意味着生成一个1行100列的矩阵
% 矩阵元素的均值为0,方差σ^2 = 1,且是正态分布的随机数
data = randn(1,100);
data(20:20:80) = NAN; % 设置第20,40,60,80个的元素为缺失值
% data的值都是在0附近的,设置4个异常值
data(10) = -50;
data(40) = 45;
data(70) = -40;
data(90) = 50;
plot(x,data)

MATLAB处理缺失值和异常值

清理缺失数据
清理缺失数据

清理缺失数据

清理离群数据
清理离群数据

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yui_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值