1.matlab
当数据很大时,可用主页中的导入数据,直接将数据导入工作区。
在工作区右键可以新建一个变量,或者ctrl+n, 清除工作区可以清除所有变量。
应用程序:
curve fitting 很重要,拟合,可以选择x轴和y轴,一般可以用多项式拟合,来拟合出一个大概的曲线。
编辑器:
断点:若代码调试不出来就设个断点
2. matlab的常见命令
matlab是以矩阵为基础的系统计算平台
注释:
1、x1:生成了一个一行三列的矩阵,x3 = x1’:x3为x1的转置。
2、初始值:步长:终值。x1:3.4是初始值,6.7是终值。冒号如果中间什么都不填,代表间隔为1,后面两个中间红色的为间隔。
4、一行中的变量可以用,可以不用,矩阵换行时要用;
2.1 复数矩阵生成
2.2 符号矩阵生成
2.3 特殊矩阵生成
单位矩阵,随机矩阵,正太随机矩阵
随机矩阵在蒙特卡洛中用的比较多
2.4 matlab中数据分析的基本原则
例子:
这里默认对列进行运算,若想对行进行运算,转置一下。
2.5 矩阵的运算
2.5.1 矩阵的标识
a = rand(4)
vr = [1, 3]
vc = [1,3]
a1 = a(vr, vc)
A11:12行12列的矩阵,A12:12行345列
A(1,:):1 代表一行,:没标列代表所有列。
意为第一行所有列全为0;
3. matlab绘图
3.1 线性图的绘制
plot是二维图的绘制
linspace:把一个连续的图形离散化了
手动标横纵坐标:工具——编辑——双击
3.2 如何让图像更好看
3.2.1 增加颜色,线性
3.2.2 增加网格线,坐标轴
多个图形的绘制:
因为做数模会用到对比图
注释:
1、要求是所有的横纵坐标都是一个值
2、hold on:等等,还有一张图
3、这个也可以画多个图,但后面标属性会麻烦一点
x = linspace(0, 8*pi, 100) %在(0,8pi)之间产生100个线性等分点
y1 = sin(x + cos(x+sin(x)))
y2 = 0.2*x + sin(x+cos(x+sin(x)))
plot(x,y1,'k:',x,y2,'k-') %k是颜色, :是线性
plotyy(x,y1,x,y2,'plot')
迭代的时候会用到
此代码的结果图:
3.2.3 直方图的绘制
y = randn(1, 1000)
subplot(2,1,1)
hist(y,10)
title('Bins = 10')
subplot(2,1,2)
hist(y,50)
title('Bins = 50')
代码运行图
适合去看是否符合正态分布
3.2.4 条形图的绘制
x = [1 2 5 4 8]
y = [x;1:5]
subplot(1,3,1)
bar(x)
subplot(1,3,2)
bar(y)
subplot(1,3,3)
bar3(y)
代码运行示例:
y是两列
ylim是对y的刻度进行限制
3.2.5 堆积图和横条图,饼图的绘制
x = [1 2 5 4 8]
y = [x;1:5]
subplot(1,2,1)
bar(y,'stacked')
subplot(1,2,2)
barh(y)
代码运行:
a=[10 5 20 20]
subplot(1,2,1)
pie(a,[0,0,0,1])
subplot(1,2,2)
pie3(a,[0,0,0,1])
3.2.6 阶梯状图和柱状图的绘制
x = linspace(0.4*pi,40)
y = sin(x)
subplot(1,2,1)
stairs(y)
subplot(1,2,2)
stem(y)
3.2.7 箱状图绘制
boxplot(x) 用于数据分析,排除一些错误数据,数据类题目中很需要
数据分析中常用的两种方法:
箱状图:计算数据的最大值,最小值还有极限的最大值,最小值,如果不在这些范围之内的都认为是错误数据
插值拟合法:比如说可以拟合成一个函数,如果离这个函数比较远的话就是错误数据
median:中值
最大值和最小值
红色为均值
数据要在-3.5到32.5之间
3.3 三维图形的绘制
4.插值和拟合
插值:给了你十个点,你要给我一个函数,这叫插值
拟合:给了你六个点,你要给我一个函数使所有的点里这个函数最近
4.1 一维插值
例子:
x0 = [0 3 5 7 9 11 12 13 14 15]
y0 = [0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6]
x = 0:0.1:15 %在0-15之间每间隔0.1取一个数值
y = interp1(x0, y0, x,'spline') % x:对每个x求一个y,spline:三次样条插值
plot(x0, y0, 'k+',x,y,'r')
gird on
4.2 二维插值&散点数据插值
二维插值
散点数据插值:
例子:
是一个散点图的插值
4.3 拟合
例子:
x = 0: 0.1: 1
y = [-0.447, 1.978, 3.28, 6.16, 7.08, 7.34, 7.66, 9.56, 9.48, 9.30, 11.2]
A = polyfit(x,y,2)
z = polyval(A,x)
plot(x,y,'k+',x,z,'r')
课后作业:
求出来的为lna,求出点再用plot函数连接起来。ployfit 得出的是系数,一个lna一个b。
5 非线性函数插值和拟合
最小二乘法:所有的点到曲线的距离越近越好。F:最终要拟合出来的函数,
lsqcurverfit,
lsqnonlin:非线性拟合
x为输出值,所有的系数。
lsqcurvefit: matlab命令 ‘fun’: 函数名 x0:迭代初值,因为所有的非线性最小二乘法拟合本质上是一个迭代的过程。 xdata,ydata:数据值
lb,ub:上下限 option:不加也没事。
上面三个比较常用。
x:输出值
options:不加也没有太大的影响
x0:迭代初始值 lb,ub:上下限
第二行的k代表了k(1),k(2),k(3)。xdata:表格中的数据。会有一个初始值。resnrom:最终值,有没有都行。
这里的F定义的是差值,最后要减去ydata;
6. 微积分
考的较多
var: 符号 l1: 输出值 inf:无穷
syms x, a
l = limit(a/x, x, 0)
int: 积分的函数 var:f 关于谁求积分
syms x y z
l1 = int(sin(x*y+z), z)
考的很多:
这两个遇到特别复杂的问题的时候,通常用他们两个来求解。
‘sin’:函数 0,pi:上下限
辛普森公式的精度会更高一点
这里设x 100等分,y就是对应步长下的值。
7. 常微分方程的求解
一阶常微分方程
第二行为y的初始值
类热传导方程
龙格库塔:‘fun‘:函数 y0:初始值
刹车问题:
mg=摩擦力。
初始条件:t=0时的位置和速度,
第一个公式就是速度公式,左右都乘了个t,变成了对t求导,加了个初始值,v0。v减速到0,他经过的时间为t0,
第二个公式再求积分,把t0再带进来就可以求出刹车距离。
T为司机的反应时间,加上反应时间就是黄灯的时间。
其实只和v0有关。
v在10-75之间,每隔一个速度求一个值。