矩阵

矩阵的创建

直接输入法:以$[\ ]$为标识符,同行用空格或者逗号分隔,行与行之间用分号或回车键分隔。

函数创建法

  • $zeros,ones,eye$分别用来创建全为0的矩阵,全为1的矩阵和单位矩阵
  • $rand,randi,randn$分别用来创建均匀分布的随机数,均匀分布的随机整数和标准正态分布的随机数

导入本地文件中的数据

矩阵元素的修改

利用等号复制直接修改

1
2
3
A = randi([1,20],3, 5);
A(2,3)=1000;
A(3,:)=20000;

使用线性索引进行修改

1
2
3
4
5
A = randi([1,20],3, 5);
A(4) = 100000; %是纵向数的
A(1:2) = 0;
A(1:2:end) = 200;
A([3,5,6]) = [88 88 88];

矩阵的删除

  • 将等号右侧变成空向量[ ],可以删除对应位置的元素。需要注意的是,通常只能删除矩阵的整行或者整列

  • 通过线性索引来删除矩阵的元素。使用线性索引删除后,MATLAB 会将矩阵中剩下的元素按照线性索引的顺序放入到一个向量中。另外,使用线性索引可以删除任意位置的元素,不需要删除矩阵的一整行或者一整列。

矩阵的拼接

横向拼接:要求行数相同

1
2
3
4
A = randi([1, 20], 3, 5)
B = randi([100, 200], 3, 2)
C = [A, B]
D = cat(2, A, B)

纵向拼接:列数相同

1
2
3
4
A = randi([1, 20], 2, 3);
B = randi([100, 200], 1, 3);
C = [A; B];
D = cat(1, A, B);

矩阵的重构

  • reshape函数,改变矩阵形状
  • sort函数,排序
  • sortrows函数,按照某一列对矩阵排序且同一行元素不变

矩阵的运算

逻辑基础

结构基础

条件结构:

  • if-elseif-else-end

  • switch-case-otherwise-end

循环结构:

  • for-end
  • while-end

二维绘图

分类

  • plot函数和fplot函数
  • 条形图bar
  • 饼图pie
  • 散点图scatter

图形属性

图形标注

  1. title(图形标题)
  2. xlabel(x轴说明)
  3. ylabel(y轴说明)
  4. text(x,y,图形说明)
  5. legend(图例1,图例2,……)

三维绘图

三维曲线plot3fplot3函数

三维曲面

  1. 利用meshgrid函数生成,[X,Y]=meshgrid(x,y)。参数x、y为向量,存储网格点坐标的X、Y为矩阵。

  2. mesh(x,y,z,c)surf(x,y,z,c)

    其中x,y是网格坐标矩阵,z是网格点的高度矩阵,c用于指定在不同高度下的曲面颜色。c省略时,颜色

    的设定正比于图形的高度。

1
2
3
4
5
6
7
8
9
t = -3: 0.1:3;
[X, Y] = meshgrid(t);
Z = X .* exp(-X.^2-Y.^2);
subplot(1, 2, 1);
mesh(X,Y,Z)
title("mash函数")
subplot(1, 2, 2)
surf(X, Y, Z)
title("surf函数")

读取写入文件中的数据

readtablewritetable

实例:

1
2
3
4
5
6
T = readtable("patients.xls");
T.Gender{1} = ('男');
writetable(T,"路径\文件名.xls");
T1 = readtable("路径\文件名.xls");
writetable(T1,"路径\文件名.txt", 'Delimiter', ' ');
T2 = readtable("路径\文件名.txt");

数据预处理

在实时脚本中选择实时编辑器窗口的“任务”

  • 清晰缺失数据可以对缺失数据进行处理

  • 清洗离群数据可以处理偏离较大的数据

神经网络

预测数据

  1. 首先在工作区导入预测数据和响应数据,分别命名为X,Y
  2. 用nftool打开神经网络,点击导入数据,如果是根据一行的X预测一个Y,那就点击行;否则点击列
  3. 点击训练,观察回归图,如果所有的R都在0.9以上,说明训练结果拟合程度好
  4. 点击导出模型-导出到工作区,命名为results,result是一个结构体,其中的Network对后续预测有用
  5. 导入PreX,根据PreX预测PreY,预测代码如下:
1
2
3
4
PreY = zeros(10,1);     %预测一个10行1列的数据
for i = 1:10
PreY(i) = sim(results.Network,PreX(i,:)');
end