备战数学建模1——MATLAB矩阵,二维图、三维图!(超级全面易懂)

一、矩阵超级基础的内容

1.创建一个1行6列的矩阵

a =[1 2 3 8 7 4]

2.对矩阵中每个元素都加3

(线代里面只有和规格的才能加减)
在Matlab里面,如果一个操作数是标量,而另一个操作数不是标量,MATLAB会将该标量隐式扩展到与另一个操作数具有相同的大小

b=a+3

结果:

a =
     1     2     3     8     7     4
b =
     4     5     6    11    10     7

3.plot函数作图。

索引为横坐标。索引就是该数字在矩阵里是"第几个"

plot(b)
grid on

grid on 是添加网格线的意思
在这里插入图片描述
在这里插入图片描述
索引为横坐标,数组的值就是函数的纵坐标值

4.多维矩阵与常见运算

空格或逗号分隔同一行元素, 分号分隔各行
常见运算:转置、取逆、求特征值和特征向量

A = [3 2 1;2 4 1;3 9 2]
B = A' %求转置矩阵

[D,V] = eig(A) %特征值 特征向量
E = inv(A) %求逆矩阵 
F = A*E    %验证结果是否为单位矩阵

结果:

A =
     3     2     1
     2     4     1
     3     9     2
B =

     3     2     3
     2     4     9
     1     1     2
D =
   -0.3534   -0.5691   -0.2508
   -0.4152    0.1144   -0.1181
   -0.8383    0.8143    0.9608
V =
    7.7217         0         0
         0    1.1673         0
         0         0    0.1109
E =
   -1.0000    5.0000   -2.0000
   -1.0000    3.0000   -1.0000
    6.0000  -21.0000    8.0000
F =
     1     0     0
     0     1     0
     0     0     1

5.矩阵乘法,和矩阵点乘

C =A*B     %矩阵乘法
D = A.*B   %矩阵点乘,即对应元素相乘

结果:

C =
    14    15    29
    15    21    44
    29    44    94
D =
     9     4     3
     4    16     9
     3     9     4

6.使用矩阵A对方程A*x= b求解

方法是使用\ (反斜杠)运算符,即A的逆矩阵乘以矩阵b

b =[1;3;5]
x = A\b
A
%验证一下
t = A*x-b  %结果应该为0

结果如下:

b =
     1
     3
     5
x =
     4
     3
   -17
A =
     3     2     1
     2     4     1
     3     9     2
t =
     0
     0
     0

7.Matlab的迁就补全(标量非标量,不同维度)

在Matlab里面,如果一个操作数是标量,而另一个操作数不是标量,MATLAB会将该标量隐式扩展到与另一个操作数具有相同的大小

H = [1 1 1; 2 2 2;3 3 3]
K = 4

L = K*H %运算时,K变为3X3的对角矩阵,对角线上都是4
M = K+H %运算时,K编程3X3的矩阵,每个元素都是4

结果:1.得到 4乘以每一个元素;2得到4加上每一个元素

L =
     4     4     4
     8     8     8
    12    12    12
M =
     5     5     5
     6     6     6
     7     7     7

不同维度的行向量和列向量相加

N = [1 2 3 4]
P =[5;6;7]
Q = N+P

结果:

N =
     1     2     3     4
P =
     5
     6
     7
Q =
     6     7     8     9
     7     8     9    10
     8     9    10    11

一般不要进行这种不同维度的矩阵运算!

二、Matlab四种常见二维图

1.线图

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

x = 0:0.05:30; %从030,每隔005取一次值
y = sin(x);
plot(x,y);  %以x的值为横坐标 以y为纵坐标做线性图
% 若(x,y,'LineWidth',2)可变粗
xlabel("横轴标题")  %横轴标签
ylabel("纵轴标题")
%grid on %显示网格
%axis([0,20,-1.5,1.5])  %设置横纵坐标范围

原始图:
在这里插入图片描述
改变范围前后对比图:
在这里插入图片描述
如果增大间距: 一般的画图间距是:0.05
间距变大的话,直接变得有棱有角的,对于函数图来说,不精细。但是如果只是折线图的话,就完全可以。
在这里插入图片描述

plot函数改颜色粗细合集:
改粗细:

plot(x,y,'LineWidth',2);  %要再改大就把2变为3

🎄多组函数显示在同一张图

y1 = sin(x)
y2 = cos(x)
plot(x,y1,x,y2)
axis([0,20,-1.5,1.5]) %X,Y的取值范围  可调节

在这里插入图片描述

2.条形图

bar函数创建重直条形图
barh函数用来创建水平条形图

t = -3:0.5:3;
p = exp(-t.*t); %函数 exp 就是自然对数e  底数是e 指数就是负t方
bar(t,p)
barh(t,P)

运行结果:
在这里插入图片描述
这两张图在我电脑上是 一张一张出来的,有点儿不方便,得取找找之前数学实验,婷姐的做法

3.极坐标图

polarplot函数用来绘制极坐标图

th = 0:0.01:2*pi;
%abs 求绝对值或复数的模
radi = abs(sin(7*th).*cos(10*th));
%radi = abs(sin(2*th).*cos(2*th));
polarplot(th,radi)

运行结果:
在这里插入图片描述

4.散点图

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

Height = randn(1000,1);  %生成符合正态分布的随机数
Weight = randn(1000,1);
scatter(Height,Weight)
xlabel( 'Height')
ylabel( 'Wesght')

注意:
✨自己给数据作图

Height = randn(1000,1); %把这个改为自己的数据  矩阵形式存储数据  再调用画图函数就行    

✨随机数函数

randn(1000,1);  %生成符合正态分布的随机数 最大为1000 最小为1

备战 数学建模:https://blog.csdn.net/nuist_NJUPT/article/details/123945181

三、Matlab三维图

1.三维曲面图

surf函数可用来做三维曲面图。
常见用法:surf(X,Y,Z)或者surf(X)
首先需要用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); 
%colormap hsv
% colormap %设置颜色,可跟winter、 summer等 hsv默认色
%colorbar

结果:左边经典色,右边是冷色系在这里插入图片描述
介绍一下surf函数的用法:
✨ surf(X,Y,Z)
创建一个三维曲面图,它是一个具有实色边和实色面的三维曲面。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度。曲面的颜色根据 Z 指定的高度而变化。
✨surf(X,Y,Z,C) 指定曲面的颜色。

✨surf(Z)
创建一个曲面图,并将 Z 中元素的列索引行索引用作 x 坐标和 y 坐标。
✨surf(Z,C) 指定曲面的颜色。


meshgrid函数用来生成网格矩阵,既可以是二维网格矩阵,又可以是三维网格矩阵。

1、[X,Y] = meshgrid(x,y) :基于向量x和y中包含的坐标返回二维网格坐标。X是一个矩阵,每一行是x的一个副本,Y也是一个矩阵,每一列是y的一个副本。坐标X和Y表示的网格有length(y)个行和length(x)个列。

2 、[X,Y] = meshgrid(x) 与 [X,Y] = meshgrid(x,x)相同,返回网格大小为length(x)*length(x)的方形网格矩阵。

3、 [X,Y,Z] = meshgrid(x,y,z),返回由向量x,y,z定义的三维网格坐标,X,Y和Z表示的网格大小为length(x)*length(y)*length(z)。


2.画子图(几个图画在一张画布上)

使用subplot函数可以在同一窗口的不同子区域显示多个绘图
subplot(a,b,c) a行b列的布局,c表示这是第几张图

th = 0:0.01:2*pi;
radi = abs(sin(2*th).*cos(2*th));
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);polarplot(th,radi);title('3rd')
subplot(2,2,4);scatter(Height,Weight);title('4th')

结果:
在这里插入图片描述

  • 8
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数学建模备赛、学习资料 数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!数学建模大赛赛题、解决方案资料,供备赛者学习参考!
7个回归分析方法 什么是回归分析? 回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。 这种技术通常用于 预测分析、 时间序列模型 以及发现变量之间的因果关系。 例如,司机的鲁莽驾驶与道路交通事故数量之间的关系,最好的研究方法就是回归。 回归分析是建模和分析数据的重要工具。 在这里,我们使用曲线/线来拟合这些数据点, 在这种方式下,从曲线或线到数据点的距离差异最小。 我会在接下来的部分详细解释这一点。 我们为什么使用回归分析? 如上所述,回归分析估计了两个或多个变量之间的关系。 下面,让我们举一个简单的例子来理解它: 比如说,在当前的经济条件下,你要估计一家公司的销售额增长情况。 现在,你有公司最新的数据,这些数据显示出销售额增长大约是经济增长的2.5倍。 那么使用回归分析,我们就可以根据当前和过去的信息来预测未来公司的销售情况。 使用回归分析的好处良多。 具体如下: • 它表明自变量和因变量之间的显著关系 它表明多个自变量对一个因变量的影响强度 回归分析也允许我们去比较那些衡量不同尺度的变量之间的相互影响,如价格变动与促销活动数量之间联系。 这些有利于帮助市场研究人员,数据分析人员以及数据科学家排除并估计出一组最佳的变量,用来构建预测模型。 我们有多少种回归技术? 有各种各样的回归技术用于预测。 这些技术主要有三个度量 (自变量的个数, 因变量的类型 回归线的形状)。 对于那些有创意的人,如果你觉得有必要使用上面这些参数的一个组合,你甚至可以创造出一个没有被使用过的回归模型。 但在你开始之前,先了解如下最常用的回归方法: 1. 线性回归(Linear Regression) 线性回归通常是人们在学习预测模型时首选的技术之一。 在这种技术中, 因变量是连续的, 自变量可以是连续的也可以是离散的, 回归线的性质是线性的。 线性回归使用最佳的拟合直线(也就是回归线) 在因变量(Y)和一个或多个自变量(X)之间建立一种关系。 用一个方程式来表示它,即 Y=a+b*X + e, 其中a表示截距, b表示直线的斜率, e是误差项。 这个方程可以根据给定的预测变量(s)来预测目标变量的值。 现在的问题是:我们如何得到一个最佳的拟合线呢? 这个问题可以使用最小二乘法轻松地完成。 一元线性回归和多元线性回归的区别在于, 多元线性回归有(>1)个自变量, 而一元线性回归通常只有1个自变量。 最小二乘法也是用于拟合回归线最常用的方法。 对于观测数据,它通过最小化每个数据点到线的垂直偏差平方和来计算最佳拟合线。 因为在相加时,偏差先平方,所以正值和负值没有抵消。 我们可以使用R-square指标来评估模型性能。 要点: • 自变量与因变量之间必须有线性关系 • 多元回归存在多重共线性,自相关性和异方差性 线性回归对异常值非常敏感。它会严重影响回归线,最终影响预测值 多重共线性会增加系数估计值的方差,使得在模型轻微变化下,估计非常敏感。 结果就是系数估计值不稳定, 在多个自变量的情况下,我们可以使用向前选择法,向后剔除法和逐步筛选法来选择最重要的自变量。 2. 逻辑回归(Logistic Regression) 逻辑回归是用来计算“事件=Success”和“事件=Failure”的概率。 当因变量的类型属于二元(1 / 0,真/假,是/否)变量时,我们就应该使用逻辑回归。 这里,Y的值从0到1,它可以用下方程表示。 odds= p/ (1-p) = probability of event occurrence / probability of not event occurrence ln(odds) = ln(p/(1-p)) logit(p) = ln(p/(1-p)) = b0+b1X1+b2X2+b3X3....+bkXk 概要 上述式子中,p表述具有某个特征的概率。 你应该会问这样一个问题:我们为什么要在公式中使用对数log呢? 因为在这里我们使用的是的二项分布(因变量),我们需要选择一个对于这个分布最佳的连结函数。 它就是Logit函数。 在上述方程中,通过观测样本的极大似然估计值来选择参数, 而不是最小化平方和误差(如在普通回归使用的)。 要点: • 它广泛的用于分类问题。 逻辑回归不要求自变量和因变量是线性关系。 它可以处理各种类型的关系,因为它对预测的相对风险指数OR使用了一个非线性的log转换。 逻辑回归是用于分类的~这个得记住 为了避免过拟合和欠拟合,我们应该包括所有重要的变量。 有一个很好的方法来确保这种情况, 就是使用逐步筛选方法来估计逻辑回归。 它需要大的样本量,因为在样本数量较少的情况下,极大似然估计的效果比普通的最小二乘法差。 自变量不应该相互关联的,即不具有多重共线性。 然而,在分析和建模中,我们可以选择包含分类变量相互作用的影响。 • 如果因变量的值是定序变量,则称它为序逻辑回归 • 如果因变量是多类的话,则称它为多元逻辑回归 3. 多项式回归(Polynomial Regression) 对于一个回归方程,如果自变量的指数大于1,那么它就是多项式回归方程。 如下方程所示:y=a+b*x^2 在这种回归技术中,最佳拟合线不是直线。 而是一个用于拟合数据点的曲线。 重点: 虽然会有一个诱导可以拟合一个高次多项式并得到较低的错误,但这可能会导致过拟合。 你需要经常画出关系来查看拟合情况,并且专注于保证拟合合理,既没有过拟合又没有欠拟合。 下面是一个例,可以帮助理解: 明显地向两端寻找曲线点,看看这些形状和趋势是否有意义。 更高次的多项式最后可能产生怪异的推断结果。 4. 逐步回归(Stepwise Regression) 在处理多个自变量时,我们可以使用这种形式的回归。 在这种技术中,自变量的选择是在一个自动的过程中完成的,其中包括非人为操作。 这一壮举是通过观察统计的值,如R-square,t-stats和AIC指标,来识别重要的变量。 逐步回归通过同时添加/删除基于指定标准的协变量来拟合模型。 下面列出了一些最常用的逐步回归方法: • 标准逐步回归法做两件事情。即增加和删除每个步骤所需的预测。 • 向前选择法从模型中最显著的预测开始,然后为每一步添加变量。 • 向后剔除法与模型的所有预测同时开始,然后在每一步消除最小显着性的变量。 这种建模技术的目的是使用最少的预测变量数来最大化预测能力。 这也是处理高维数据集的方法之一。 5. 岭回归(Ridge Regression) 岭回归分析是一种用于存在多重共线性(自变量高度相关)数据的技术。 在多重共线性情况下,尽管最小二乘法(OLS)对每个变量很公平,但它们的差异很大,使得观测值偏移并远离真实值。 岭回归通过给回归估计上增加一个偏差度,来降低标准误差。 上面,我们看到了线性回归方程。还记得吗? 它可以表示为:y=a+ b*x 这个方程也有一个误差项。完整的方程是: y=a+b*x+e (error term) , [error term is the value needed to correct for a prediction error between the observed and predicted value] => y=a+y= a+ b1x1+ b2x2+....+e, for multiple independent variables. 在一个线性方程中,预测误差可以分解为2个子分量。 一个是偏差, 一个是方差。 预测错误可能会由这两个分量或者这两个中的任何一个造成。 在这里,我们将讨论由方差所造成的有关误差。 岭回归通过收缩参数λ(lambda)解决多重共线性问题。 看下面的公式: 在这个公式中,有两个组成部分。 第一个是最小二乘项, 另一个是β2(β-平方)的λ倍,其中β是相关系数。 为了收缩参数把它添加到最小二乘项中以得到一个非常低的方差。 要点: 除常数项以外,这种回归的假设与最小二乘回归类似; 它收缩了相关系数的值,但没有达到零,这表明它没有特征选择功能,这是一个正则化方法,并且使用的是L2正则化。 6. 套索回归(Lasso Regression) 它类似于岭回归。 Lasso (Least Absolute Shrinkage and Selection Operator)也会惩罚回归系数的绝对值大小。 此外,它能够减少变化程度并提高线性回归模型的精度。 看看下面的公式: Lasso 回归与Ridge回归有一点不同,它使用的惩罚函数是绝对值,而不是平方。 这导致惩罚(或等于约束估计的绝对值之和)值使一些参数估计结果等于零。 使用惩罚值越大,进一步估计会使得缩小值趋近于零。 这将导致我们要从给定的n个变量中选择变量。 要点: • 除常数项以外,这种回归的假设与最小二乘回归类似 • 它收缩系数接近零(等于零),确实有助于特征选择 这是一个正则化方法,使用的是L1正则化 7. 回归(ElasticNet) ElasticNet是Lasso和Ridge回归技术的混合体。 它使用L1来训练并且L2优先作为正则化矩阵。 当有多个相关的特征时,ElasticNet是很有用的。 Lasso 会随机挑选他们其中的一个,而ElasticNet则会选择两个。 Lasso和Ridge之间的实际的优点是,它允许ElasticNet继承循环状态下Ridge的一些稳定性。 要点: 它可以承受双重收缩 • 选择变量的数目没有限制 • 在高度相关变量的情况下,它会产生群体效应 除了这7个最常用的回归技术,你也可以看看其他模型,如Bayesian、Ecological和Robust回归。 如何正确选择回归模型? 当你只知道一个或两个技术时,生活往往很简单。 我的老师曾告诉我,如果结果是连续的,就使用线性回归。 如果是二元的,就使用逻辑回归! 然而,在我们的处理中,可选择的越多,选择正确的一个就越难。 类似的情况下也发生在回归模型中。 在多类回归模型中,基于自变量和因变量的类型,数据的维数以及数据的其它基本特征的情况下,选择最合适的技术非常重要。 以下是你要选择正确的回归模型的关键因素: 1. 数据探索是构建预测模型的必然组成部分 在选择合适的模型时,比如识别变量的关系和影响时,它应该首选的一步。 2. 比较适合于不同模型的优点,我们可以分析不同的指标参数 如统计意义的参数,R-square,Adjusted R-square,AIC,BIC以及误差项,另一个是Mallows' Cp准则。 这个主要是通过将模型与所有可能的子模型进行对比(或谨慎选择他们),检查在你的模型中可能出现的偏差。 3. 交叉验证是评估预测模型最好额方法 在这里,将你的数据集分成两份(一份做训练和一份做验证)。 使用观测值和预测值之间的一个简单均方差来衡量你的预

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值