系列文章目录
文章目录
前言
本科期间学习过数学建模课,硕士课程《数值计算方法》需要用到MATLAB,但本科期间学习时未做笔记导致部分知识遗忘,所以对MATLAB进行二次学习。
参考资料
DearLife-零基础入门Matlab(一篇两个小时就能学完的入门博客)
B站-爱研究的小阿楠-【简洁版】0零基础入门matlab教程基础版,听懂人话就能学会!毕业设计……
1 界面认识
2 变量命名
2.1变量命名规则:
- 变量名区分大小写;
- 变量名长度不超过63位
- 变量名简洁明了,尽量做到见名知意;
- 变量以字母开头,可以由字母、数字和下划线组成,但不能使用标点;
2.2其他规则:
-
Matlab中的注释
%% 独占一行的注释(有上下横线分割)
% 普通注释
-
清空环境变量及命令
clear all: 清除Workspace中的所有变量(右侧工作区)
clc: 清除Command Window中的所有命令(命令行窗口)
; 加;程序结果不会在命令行窗口显示,反之程序结果不会在命令行窗口显示
3 逻辑运算
与:&&
或:||
非:!
4 数据类型
4.1 数字
1+2
4-7
7*8
7/8
4.2 字符与字符串
s = 'a'
abs(s)%查找ASCILL码
char(65)
num2str(65)
str = 'hello matlab'%空格也纳入计算
length(str)
4.3 矩阵
A = [1 2 3; 4 5 2; 6 2 7]
B = A' %矩阵求转置
C = A(:)%矩阵按照列向量展开为一列
D = inv(A)%矩阵求逆
E = A * D%矩阵相乘
E = zeros(10, 5, 3)%创建10行5列的3维矩阵
E(:,:,1) = rand(10, 5)%生成(0,1)之间10行5列的均匀分布的伪随机数
E(:,:,2) = randi(4,10, 5)%生成(0,4)之间10行5列的均匀分布的伪随机数
E(:,:,3) = randn(10, 5)%生成(0,1)之间10行5列的正态分布的伪随机数
输出:有点麻烦,所以略
4.4 元胞数组
A = cell(1,6) %定义元胞数组
A{2} = eye(3) %产生m×n的单位矩阵
A{5} = magic(5)%magic是一种函数,用于产生魔方矩阵,它的每行、列以及对角线的数之和相等。该和的值为1+2+3+.....+n^2的和再除以n,n必须为大于或等于3的整数。
B = A{5}
C = A{2}
输出:
A =
1×6 cell 数组
[] [] [] [] [] []
A =
1×6 cell 数组
[] [3×3 double] [] [] [] []
A =
1×6 cell 数组
[] [3×3 double] [] [] [5×5 double] []
B =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
C =
1 0 0
0 1 0
0 0 1
4.5 结构体
books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30 40])
books.name%属性
books.name(1)%输出为cell
books.name{1}%字符串
输出:
books =
包含以下字段的 struct:
name: {'Machine Learning' 'Data Mining'}
price: [30 40]
ans =
1×2 cell 数组
'Machine Learning' 'Data Mining'
ans =
cell
'Machine Learning'
ans =
'Machine Learning'
5 矩阵构造与四则运算
5.1 矩阵定义与构造
A = [1 2 3 5 8 5 4 6]
B = 1:2:9 %输出1-9间数,步长为2
C = repmat(B,3,1) %将B重复3行1列
D = ones(2,4) %生成2行4列值为1的矩阵
输出:
A =
1 2 3 5 8 5 4 6
B =
1 3 5 7 9
C =
1 3 5 7 9
1 3 5 7 9
1 3 5 7 9
D =
1 1 1 1
1 1 1 1
5.2 矩阵的四则运算
A = [1 2 3 4; 5 6 7 8]
B = [1 1 2 2; 2 2 1 1]
C = A + B % 矩阵求和
D = A - B % 矩阵作差
E = A * B'% 矩阵相乘
F = A .* B % 矩阵对应位置相乘
G = A / B % A乘以B的逆
H = A ./ B %对应位置相除
输出:
A =
1 2 3 4
5 6 7 8
B =
1 1 2 2
2 2 1 1
C =
2 3 5 6
7 8 8 9
D =
0 1 1 2
3 4 6 7
E =
17 13
41 37
F =
1 2 6 8
10 12 7 8
G =
1.8333 -0.1667
3.1667 1.1667
H =
1.0000 2.0000 1.5000 2.0000
2.5000 3.0000 7.0000 8.0000
6 矩阵下标
A = magic(5)
B = A(2,3)
C = A(3,:) % 输出第3行
D = A(:,4) % 输出第4列
[m, n] = find(A>20) % 找大于20的序号值/矩阵
输出:
A =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
B =
7
C =
4 6 13 20 22
D =
8
14
20
21
2
m =
2
1
5
4
3
n =
1
2
3
4
5
7 程序结构
7.1循环结构
7.1.1 for循环
程序结构
for 循环结构 =初值:步长:终值
执行语句1
.
.
.
执行语句n
end
实例运算1:
求12+22+32+32+42+52+……+102
sum = 0
for n = 1:10
sum = sum + n^2;
end
sum
输出:
385
实例运算2:
求 1!+2!+3!+4!+5!+……10!
sum = 0
for i = 1:10;
p = 1;
for j = 1:i;
p = p*j;
end
sum = sum + p;
end
sum
输出:
sum = 0
sum = 4037913
7.1.2 while循环
程序结构
while 条件表达式
执行语句1
.
.
.
执行语句n
end
实例运算1:
求1+2+3+4+5+6+7+8+9+10的和。
s=0;
n=1;
while n <= 10;
s = s + n;
n=n+1;
end
fprintf('%d',s);
输出::55
7.2 分支结构
7.2.1 if语句
实例运算:
a = 100;
b = 20;
if a > b
fprintf('A大于B呀\n')
else
fprintf('A比B小呀\n')
end
输出:A大于B呀
7.2.2 switch语句
程序结构
switch 表达式(数值或字符串)
case 数值或字符串1
语句体1;
case 数值或字符串2
语句体2;
.
.
.
otherwise
语句体n;
end
实例运算1
number = input('请输入0-10的数字:');
switch(number)
case{1,3,5,7,9}
disp('输入的值为奇数');
case{0,2,4,6,8,10}
disp('输入的值为偶数');
otherwise
disp('输入有误,再见');
end
输入:41
输出:输入有误,再见
8 二维平面绘图
需要的参数:
8.1 简易二维平面绘图
x = 0:0.01:2*pi;%x取0-2*pi之间的值,步长为0.01
y = sin(x);
figure %建立幕布
plot(x,y)%绘制图片
title('y = sin(x)')%命名图片标题
xlabel('x')%x轴标签
ylabel('y')%y轴标签
xlim([0 2*pi])
输出:
8.2 复杂二维平面绘图
x = 0:0.1:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
figure;
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot');%一条轴,两条y轴绘制图像
set(get(AX(1),'Ylabel'),'String','Slow Decay');%y1轴标签
set(get(AX(2),'Ylabel'),'String','Fast Decay');%y2轴标签
xlabel('Time(\musec)');
title('Multiple Decay Rates');
set(H1,'LineStyle','--');%设置线形
set(H2,'LineStyle',':');%设置线形
输出:
9 三维立体绘图
9.1 简易三维立体绘图
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)%绘制立体图
xlabel('sint(t)')
ylabel('cos(t)')
zlabel('t')
grid on % 在图像上添加网格
axis square% 将三维图的范围放在正方体内
输出:
9.2 双峰函数
[x,y,z]=peaks(30);
mesh(x,y,z)
grid %绘制图像
输出:
10 图像的导出与保存
在弹出图像窗口中进行,可以保存、复制图像,并能调整图像大小
11 函数
11.1 函数的定义
函数定义格式:
function 输出形参列表 =函数名(输入形参列表)
% 注释
函数语句体
end
注:
- 函数必须是一个单独的.m文件;
- 函数文件的文件名必须与函数名一致
- 当输出形参多于一个时,用方括号括起来
- 注释部分,说明函数功能与变量代表的含义。
11.2 函数的调用
可在新文件或命令窗口调用函数
11.3 多函数
一个.m的文件中可以定义多个函数,必须另外建立一个文件来调用这个.m中定义的文件。
w = f * 2;
end
w
%% 11.2 函数的调用
在弹出图像窗口中进行,可以保存、复制图像,并能调整图像大小
总结
例如:以上就是今天要讲的内容,本文仅仅简单介绍了MATLAB的使用,而MATLAB提供了大量能使我们快速便捷地处理数据的函数和方法。