matlab使用


导入数据

  1. load:load函数可导入.mat格式的文件,load函数会将mat文件中的变量加载到matlab的工作区。
data = load('filename.mat');
  1. importdata:importdata函数可导入多种格式的文件,例如.txt、.csv、.xls,importdata函数将文件中的数据转换成矩阵存储。
data = importdata('filename.xls');
  1. readmatrix:readmatrix函数可导入多种格式的文件,例如.txt、.csv、.xls等,readmatrix函数将文件中的数据转换成矩阵存储,默认只读取数值数据。
data = readmatrix(‘文件名+后缀名’, ‘Sheet’, ‘工作表名字’, ‘Range’, ‘数据的范围’);

randperm

randperm函数可随机打乱一个数字序列,其内的参数决定了随机数的范围。

temp = randperm(81)%将1-81随机打乱返回一个81列的矩阵

rng&&rand

rng函数用于设置随机种子,rand函数用于取随机值。
产生伪随机数有一个种子,所谓的伪随机就是指有一定“规律”,而这个种子就是这个“规律”。rng(‘default’)就是用默认种子。不写也是一样的,只要你没改变过种子,matlab刚打开默认就是种子0

rng(‘default’);
rand(1,10);

rng(0);
rand(1,10);

rand(1,10);

%前两个每次运行的结果都一样,两段代码产生的随机数也一样,而第三个每次不一样

normrnd

返回具有特殊要求的随机数,比如随机矩阵,满足正态分布的随机数等。

r=normrnd(mu,sigma); %生成服从正态分布(mu参数代表均值,sigma参数代表标准差)的随机数。输入的向量或矩阵mu和sigma必须形式相同,输出r也和它们形式相同。标量输入将被扩展成和其它输入具有相同维数的矩阵。
r=normrnd(mu,sigma,m); %生成服从正态分布(mu参数代表均值,sigma参数代表标准差)的随机数矩阵,矩阵的形式由m定义。m是一个1×2向量,其中的两个元素分别代表返回值r中行与列的维数。
r=normrnd(mu,sigma,m,n); %生成m×n形式的正态分布的随机数矩阵。

矩阵

定义

A = [1 2 3;4 5 6]; % 生成2x3的矩阵
A = [1,2,3;4,5,6]; % 生成2x3的矩阵

A = a:h:b; %用于定义一维矩阵,a与b代表一维矩阵的区间,h代表一维矩阵的步长,b值可能取不到

A = linspace(a,b,n); %用于定义一维矩阵,a与b代表一维矩阵的首尾值,n代表一维矩阵的元素个数,默认100

使用

  1. 下标索引法。A(2,3)可以提取出矩阵A中(2,3)位置的元素;A(2:4,3)可以提取A(2,3)到A(4,3)的所有元素,形成一个新的矩阵;A(2:4,2:4)可以提取A(2,2)到A(4,4)的所有元素,形成一个新的矩阵。
  2. 冒号法。A(2,:)可以提取A矩阵中第二行的所有元素;A(:,2)可以提取A矩阵中第三列的所有元素。
  3. 关键字end。指矩阵某行或某列的最后一个。
  4. 结构体法。例如,A.data可以提取矩阵A中的所有数据元素。
  5. 矩阵后加‘表示对矩阵进行转置。

size

[x,y] = size(A); %返回矩阵A的行和列,其中x记录A的行数,y记录A的列数,多返回值都可如此记录
size(A,1); %返回矩阵A的行数
size(A,2); %返回矩阵A的列数

inv

用于求矩阵的逆。

A = inv(B); %用于求矩阵B的逆并返回为A。

数据归一化

定义

归一化是将一组数据按照比例缩放,使之落入一个小的特定区间内。归一化可以消除数据特征之间的量纲差异,使得每个特征在权重计算中起到相同的作用,同时还可以增加算法的收敛速度,提高模型的预测精度。

作用

  1. 消除量纲和量纲单位的影响。不同的特征可能存在不同的量纲单位和取值范围,导致权重计算时其贡献不同,无法直观比较。通过归一化操作可以将不同类型、不同取值范围等不同的数据按照一定的规则统一转化为相同的范围,使得数据在同一数值区间内比较、处理更加合理、有意义。
  2. 减少数据波动对结果的干扰。数据的波动或噪声可能影响到模型的参数学习和预测效果。归一化操作可以将数据进行压缩、规范化,使得数据的振幅减小,波动贡献变得更加平均和规律,从而提高模型的稳定性和泛化能力。
  3. 提高模型精度。归一化能够提高模型的学习效率,优化杂乱数据的排列方式,使各个属性具有相近的重要性和取值范围。从而缩短算法的收敛时间,提高模型精度和保持模型的稳健性。
  4. 在神经网络中,归一化可以使每一层节点的输入数据在同一个范围内变化,使每个节点的计算结果有相似的量级,提高了梯度下降时的收敛速度。此外,还可以防止梯度爆炸和梯度消失现象的发生,提高神经网络的预测能力。

方式

  1. mapminmax:为matlab中封装的方法之一,为线性归一化的一种。表达式为:y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin,其中,x,y分别对应归一化前后数据。xmax,xmin分别对应处理前数据的最大值和最小值,而ymax,ymin则是处理后的数据的最大值最小值。对矩阵进行处理是对矩阵的每一行分别进行处理。
% X是待处理矩阵;Y是处理后的矩阵;YMIN是期望归一化后矩阵Y每行的最小值;YMAX是期望归一化后矩阵Y每行的最大值;PS为mapminmax操作的索引。
[Y,PS] = mapminmax(X,YMIN,YMAX);
% FP是一个结构体成员,主要是FP.ymin(相当于YMIN), FP.ymax(相当于YMAX)。
[Y,PS] = mapminmax(X,FP);
% 一般用于测试样本的归一化,X为待处理测试样本,PS为对应训练样本的操作索引,Y为处理完的测试样本
Y = mapminmax(‘apply’,X,PS);
% 逆归一化
X = mapminmax(‘reverse’,Y,PS);
  1. 线性归一化:就是简单公式表达:y = (x-min Value)/(max Value-min Value),将原数据等比例缩放到[0,1]范围内。
  2. 标准差归一化:y = (x-μ)/σ,其中,x,y分别对应归一化前后数据。μ代表这组数据的均差,σ代表这组数据的方差。适用于:原来数据近似高斯分布。同时是距离度量的。
  3. 对数归一化:y= log10(x),其中,x,y分别对应归一化前后数据。

reshape

reshape可将原矩阵排列成一个新矩阵。

B = reshape(A,6,4); %将A矩阵重新输出为6行4列的矩阵B,对A逐列扫描,对B逐列填充
B = reshape(A,6,[]);%将A矩阵重新输出为6行的矩阵B,对A逐列扫描,对B逐列填充

B = reshape(A,3,4,2);%将A矩阵重新输出为3行4列2高的矩阵B,对A逐列扫描,对B逐列填充

括号

()

()一般跟在矩阵后;也可跟在函数后面,表示函数的形参;也可用于改变运算顺序。

A(3); %表示A中的第三个元素
A([2,4,5]); %返回列表[A(2),A(4),A(5)],即一个新矩阵

B(:,1); %表示第一列的全部元素
B(1,:); %表示第一行的全部元素
B(:); %表示B中所有的元素。

B(1,1:3); %表示第一行中第一列到第三列的元素
B(1:3,2); %表示第二列中第一行到第三行的元素
B(1,3:-1:1); %表示第一行中第3列到第1列的元素
B(3:-1:1,2); %表示第二列中第三行到第一行的元素

[]

[]可用于定义矩阵;拼接矩阵等。

[A,B]; %相当于水平拼接A和B,即horzcat(A,B);也可以直接用逗号“,”
[A;B]; %相当于垂直拼接A和B,即vertcat(A,B);也可以直接用分号“;”

[]; %表示一个空数组
A(1,:)=[]; %表示删去A的第一行;
A(:,1)=[]; %表示删去A的第一列。

[C,id]=setdiff(......); %接收两个返回值

{}

{}用于元胞cell型的数组(就是单元数组)的分配或引用。(可以理解为是个大的空间,里面可以容纳{} [ ] 等)

A = cell(a,b,c,...); %创建元胞数组

% 元胞数组赋值两种方式
A(i,j)={};
A{i,j}=[];
% eg:
A(1,1)={[2,3;4,5]};

% 大括号取出该位置的值
A{1,1}

创建模型layers与options

layers与options参数分别决定了你模型的网络架构与训练方式。layers参数包括你模型从输入走向输出的各层,options包括你训练网络的详细参数设定。

layers = [											%层级设置=[
    sequenceInputLayer(numFeatures)					%序列输入层(即输入数量)
    bilstmLayer(numHiddenUnits,'OutputMode','last')	%双向lstm层(隐藏单元个数,'输出模式','多对一')
    fullyConnectedLayer(numClasses)					%全连接层(目标个数),目标个数即分类的类别数
    reluLayer 										%relu激活层
    softmaxLayer									%softmax层(映射层)
    classificationLayer								%输出分类层
    regressionLayer];								%返回层


options = trainingOptions('adam', ...				%选项 = 训练选项设置('累加器', 
    'ExecutionEnvironment','cpu', ...				%'训练执行单元','cpu', 
    'GradientThreshold',1, ...						%'梯度阈值',1,
    'MaxEpochs',maxEpochs, ...						%'最大训练轮次',maxEpochs,
    'InitialLearnRate', 1e-2, ...					%初始学习率
    'LearnRateSchedule', 'piecewise', ...			%学习率下降方式
    'LearnRateDropFactor', 0.5, ...					%学习率下降因子,就是学习率每次更新的时候都乘以0.1
    'LearnRateDropPeriod', 800, ...					%学习率下降周期,每迭代20次就下降一次
    'MiniBatchSize',miniBatchSize, ...				%'最小步距',miniBatchSize,
    'SequenceLength','longest', ...					%'序列长度','整个序列',
    'Shuffle','never', ...							%'乱序','否',
    'Verbose',false, ...								%'在命令窗口中显示训练进度信息',否,
    'Plots','training-progress');					%'画图','训练过程');

%{
选择优化器:累加器 'adam'(派生自自适应矩估计)求解器通常适合作为首先尝试的优化器。除此之外还有 'rmsprop'(均方根传播)'sgdm'(带动量的随机梯度下降)优化器,选取的标准要依据效果。

最大训练轮次(MaxEpochs):训练多少轮,epoch是世代的意思,每次使用全部子集完成一次运算就是完成了一次epoch,训练轮次的设置要在防止数据过拟合的前提下尽量提高模型效果。

最小步距 (MiniBatchSize):batch批次的意思,在梯度下降中一般来说要遍历所有样本,但有的时候样本个数特别大,不适合逐一遍历作梯度下降。此时我们就可以将样本划分若干子集,对子集进行遍历,针对每一个子集进行梯度下降,更新参数。MiniBatchSize是每个子集内样本个数,最小是1,最大是全部样本个数。

序列长度(SequenceLength):“最长”-每个小批中的Pad序列具有与最长序列相同的长度。除此之外还有:‘shortest’—截断每个小批中的序列,使其长度与最短序列相同。‘positive integer’—每个小批量的序列具有与最长序列相同的长度,然后分割成指定长度的较小序列。如果发生分裂,则该函数创建额外的小批。

乱序(Shuffle):'never’不打乱数据。除此之外还有:'once’在训练之前,对训练和验证数据进行一次洗牌、'every-epoch’在每个训练轮次之前洗牌训练数据。
%}

trainNetwork

训练模型

net = trainNetwork(imds,layers,options); %为图像分类问题训练网络。图像数据存储区imds存储输入的图像数据,layers定义网络体系结构,并options定义训练选项。
net = trainNetwork(ds,layers,options); %使用数据存储训练网络ds。对于具有多个输入的网络,请将此语法与组合或转换后的数据存储区结合使用。
net = trainNetwork(X,Y,layers,options); %为图像分类和回归问题训练网络。数字数组X包含预测变量,并Y包含分类标签或数字响应。
net = trainNetwork(sequences,Y,layers,options); %训练网络以解决序列分类和回归问题(例如LSTM或BiLSTM网络),其中sequences 包含序列或时间序列预测变量并Y包含响应。对于分类问题,Y是分类向量或分类序列的单元格数组。对于回归问题,Y是目标矩阵或数字序列的单元格数组。
net = trainNetwork(tbl,layers,options); %为分类和回归问题训练网络。该表 tbl包含数字数据或数据的文件路径。预测变量必须位于的第一列中tbl。有关目标或响应变量的信息,请参见tbl。
net = trainNetwork(tbl,responseName,layers,options); %为分类和回归问题训练网络。预测变量必须位于的第一列中tbl。该 responseName参数指定在响应变量tbl。
[net,info] = trainNetwork(___); %还可以使用先前语法中的任何输入参数返回有关训练的信息。

net = trainNetwork(p_train,t_train,layers,options);

predict

predict函数可用来预测未来的数据值,可用于金融预测、天气预测、股票预测等。

Ypred = predict(Mdl,Xnew); %Mdl是训练好的模型;Xnew是新输入数据;Ypred是根据模型预测的值

绘图

matlab plot函数画图线条控制

plot(x1,y1,x2,y2,x3,y3...); %分别以xi、yi为横纵坐标画二维图
plot(x,y1,'k:',x,y2,'b--',x1,y3,'rp');
plotyy(x1,y1,x2,y2); %x1,y1相应一条曲线,x2,y2相应一条曲线。横坐标的标度同样,纵坐标有两个,左边的相应x1,y1数据对,右边的相应x2,y2数据对。
title('图形名称');
xlabel('x轴说明');
ylabel('y轴说明');
text(x,y,'图形说明');
legend(’图例1,’图例2,);
axis([xmin xmax ymin ymax zmin zmax]); %依照给出的x、y、z轴的最小值和最大值选择坐标系范围绘制曲线
axis equal; %纵横坐标轴採用等长刻度
axis square; %产生正方形坐标系(默觉得矩形)
axis auto; %使用默认设置
axis off; %取消坐标轴
axis on; %显示坐标轴
grid on/off; %命令控制画还是不画网格线
hold on/off; %命令是保持原有图形还是刷新原有图形
subplot(m,n,p); %该函数把当前窗体分成m×n个画图区,m行,每行n个画图区,区号按行优先编号。当中第p个区为当前活动区。每个画图区同意以不同的坐标系单独绘制图形。
figure(...); %用于创建图窗,用法多种多类,具体可自己按需要搜索

更多绘图操作可点击查看

numel

a = numel(A); % A为矩阵时,返回A中的元素个数;A为图片时,返回A中的像素数
a = numel(A,条件); % 返回A中满足条件的数量

floor

对操作对象向下取整。

a = floor(A); %A为数值,则返回不大于A的最大整数;A为矩阵,则对A中所有元素进行向下取整

mean

mean函数用来求平均值

mean(A,12): %A为矩阵,当输入1时,返回A每列的平均值;当输入2时,返回A每行的平均值
mean(A); %默认返回每一列的平均值

std

std函数用来求标准差。标准差具有两种计算公式,如下:
标准差计算公式

std(A,flag,dim); %A为矩阵,flag可取值0或1,若取0,则使用上面那个式子,取1则使用下面那个式子;dim可取值1或2,若取值1则求每列的标准差,取值2则求每行的标准差。
std(A); %默认使用上面那个式子求每列的标准差

./与/

A ./ B; %当A、B为矩阵时,指A矩阵中的每个数值除以B矩阵的对应数值;当A、B为数值时,就是正常除法。
A / B; %当A、B为矩阵时,指A矩阵除以B矩阵;当A、B为数值时,就是正常除法。

ones函数

ones函数用于创建全1矩阵。

A = ones(5); % 生成5x5的全1矩阵。
A = ones(2,4); % 生成2x4的全1矩阵。
A = ones(2,4)*3; % 生成2x4的全3矩阵。

normpdf函数

返回正态分布概率密度函数在某店的函数值。

y = normpdf(x); %返回标准正态分布的概率密度函数 (pdf),在x中的值处计算函数值。
y = normpdf(x,mu); %返回具有均值 mu 和单位标准差的正态分布的 pdf,在x中的值处计算函数值。
y = normpdf(x,mu,sigma); %返回具有均值 mu 和标准差 sigma 的正态分布的 pdf,在 x 中的值处计算函数值。

sum函数

用于求矩阵某些元素的和。

S = sum(A); % A为向量则返回A的元素值和;A为矩阵则返回一个行向量,其中每个元素为对应列的值;如果A是多维数组,则sum(A)沿大小不等于1的第一个数组维度计算,并将这些元素视为向量。此维度会变为1,而所有其他维度的大小保持不变。
S = sum(A,'all'); % 计算A的所有元素的总和。
S = sum(A,dim); % 沿维度dim返回总和。

hist函数

hist有直方图的意思,直方图也被称为频数直方图,它用来显示数据集的分布情况。通常用于刻画概率分布函数。

N = hist(Y); % 将向量Y的元素平均分到十个等间隔的容器中,并且返回每个容器的元素个数。
N = hist(Y,M); % M是一个标量,表明使用M个箱子,默认使用十个箱子。
[h,xout]=hist(y,x); % 其中x是一个向量,返回x的长度个以x的元素为中心的容器内的,Y的分布情况。
% 注:在使用完hist对数据进行分布情况归纳后,一般使用bar函数将结果绘出。
% bar(xout,h,'FaceColor',[0.72,0.89,0.98]);

% eg:
y=[1.1 2.2 3.3];x=[2 3 4];
[h,xout]=hist(y,x); %输出:h =[2 1 0],xout = [2 3 4]。
% 注意:第一个分组是(-inf,2.5],第二个是(2.5,3.5],第三个是(3.5,inf)。

repmat函数

B = repmat(A,n); % 返回一个数组,该数组在其行维度和列维度包含 A 的 n 个副本。A 为矩阵时,B 大小为 size(A)*n。
B = repmat(A,r1,...,rN); % 指定一个标量列表 r1,..,rN,这些标量用于描述 A 的副本在每个维度中如何排列。当 A 具有 N 维时,B 的大小为 size(A).*[r1...rN]。例如:repmat([1 2; 3 4],2,3) 返回一个 4×6 的矩阵。
B = repmat(A,r); % 使用行向量r指定重复方案。例如,repmat(A,[2 3]) 与 repmat(A,2,3) 返回相同的结果。

% eg:
A=[1, 2; 3, 4];
B = repmat(A,2);
B =

     1     2     1     2
     3     4     3     4
     1     2     1     2
     3     4     3     4


A=[1, 2; 3, 4];
B = repmat(A,2,3)
B =

     1     2     1     2     1     2
     3     4     3     4     3     4
     1     2     1     2     1     2
     3     4     3     4     3     4

solve函数

用于解决方程解决问题

syms x;
eqn = 2*x + 1 == 0;
x = solve(eqn, x);

syms x y
eqns = [x^2 + y^2 == 5, x - y == 1];
vars = [x y];
[x, y] = solve(eqns, vars)

syms a b c x
eqn = a*x^2 + b*x + c == 0;
x = solve(eqn, x)

% 解不等式
​syms x y
cond1 = x > 0;
cond2 = y > 0;
cond3 = x^2 + y^2 < 1;
conds = [cond1 cond2 cond3];
sol = solve(conds, [x y], 'ReturnConditions', true);
sol.x
sol.y
sol.conditions

linspace与logspace函数

A = linspace(1,100,10); % linspace是Matlab中的均分计算指令,用于产生x1,x2之间的N点行线性的矢量。其中x1、x2、N分别为起始值、终止值、元素个数。若默认N,默认点数为100。
A = logspace(1,100,10); % logspace(a, b, n)生成一个数组,数据的第一个元素值为a,最后一个元素为b,n是总采样点数。需要注意的是,此时产生的数组元素在10^a 到10^b上并不是均匀分布的,而形成一个对数曲线。

trapz函数

主要用于计算函数积分

x = linspace(1,10,1000);
y = sin(x);
integral = trapz(x,y); % 计算对应区域的积分值

Matlab将数据写入excel文件中

xlswrite('B/A.xlsx',data); % 将数据data写入B/A.xlsx路径下的excel文件中










  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SequenceInputLayer是深度学习中的一个层(Layer),用于处理序列数据。它通常用于自然语言处理(NLP)任务,如文本分类、命名实体识别、机器翻译等。SequenceInputLayer可以将输入的文本序列转换为向量表示,以便于神经网络进行处理。在处理文本时,SequenceInputLayer会将文本转换为一个矩阵,其中每一行代表一个单词或一个字符的向量表示。该层还支持不同的嵌入(Embedding)技术,如预训练的词向量、自适应的词向量等。通过SequenceInputLayer,可以将原始文本数据转换为机器可以理解的数值表示,从而进行进一步的处理和分析。 ### 回答2: SequenceInputLayer是深度学习中常用的一种输入层,主要用于处理序列数据。在自然语言处理、语音识别、视频分析等领域中,序列数据是非常常见的,因此SequenceInputLayer具有非常广泛的应用。 SequenceInputLayer可以对输入序列进行多种预处理操作,包括对序列进行截断、填充、转化为词向量等操作。常用的输入序列包括文本、音频、视频等数据集。 在SequenceInputLayer中,输入数据可以包含多个时间步,是以矩阵的形式输入的,其中每一列为一个时间步的数据。SequenceInputLayer的输出可以作为其他网络层的输入,例如循环神经网络(RNN)和长短时记忆(LSTM)等。 另外,SequenceInputLayer还可以设置输入数据的维度、输入形状等参数,以适应不同的数据输入。在具体应用的过程中,可以根据不同任务的需求进行配置。 总的来说,SequenceInputLayer是深度学习中非常重要的输入层之一,可以用于处理序列数据,提取序列数据中的特征信息,为后续的网络层提供更好的输入数据。 ### 回答3: SequenceInputLayerMATLAB中的一个神经网络层,用于输入序列型数据。其主要作用是将输入数据序列化,并将其传递给下一层进行处理。在许多自然语言处理和时间序列数据分析问题中,输入数据通常是一个序列,例如单词序列或时间序列。为了更好地处理这些类型的数据,可以使用SequenceInputLayerSequenceInputLayer包括以下主要特征: 1.输入数据格式:SequenceInputLayer可以处理具有任何长度和任何维度的输入数据。它可以接受任何数据类型的输入,例如数字,图像,文本等。 2.序列填充:为了处理不同长度的序列,SequenceInputLayer可以使用序列填充。它可以在序列的末尾添加零值以使其长度相同。此过程称为序列填充。 3.学习方式:SequenceInputLayer可以通过不同的学习方式进行学习,例如有监督学习和无监督学习。 4.连接方式:SequenceInputLayer可以直接连接其他神经网络层,例如LSTM(长短记忆)和GRU(门控循环单元)层,以构建强大的序列模型。 5.批量处理:为了提高训练效率,SequenceInputLayer支持批量处理。它可以同时处理多个序列,减少了训练时间。 总之,SequenceInputLayer是一个十分实用的神经网络层,可以帮助我们更好地处理序列型数据,从而提高模型的准确性和效率。它可以应用于许多自然语言处理和时间序列数据分析问题中,例如文本分类、情感分析、语音识别、预测等等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值