MATLAB在数学建模中的应用.1
为了和Excel联动,可以在工具目录打开这个xlam的文件
接着在excel里面就会出现这个
https://www.mathworks.com/help/matlab/ref/load.html?s_tid=srchtitle_load_1
一般来说,第一个语法形式是要用的最基础的写法
可以看到是加载两种文件
加载文件时的名字
太离谱了,数据得自己输入
names types x y answer
Sally Typy1 3.1 45 Yes
Tom Type1 2.5 20 No
Joy Type3 0.51 1 No
Lily Type2 2.1 80 Uncertain
我们把这个文件放到Matlab的文件夹里面
写一个函数就开始提示了
这里说不推荐使用,先看看
[A,B,C,...] = textread(filename,format) 以指定的 format 将数据从文件filename 读入到 A、B、C 等变量中,直到整个文件读取完毕。将 filename 和 format输入指定为字符向量或字符串标量。textread 对于读取已知格式的文本文件非常有用。textread 可处理固定格式文件和任意格式文件。
textread 可对输入中的字符组进行匹配和转换。每个输入字段都定义为一组连续延伸的非空白字符,这些字符延伸到下一个空白字符或分隔符,或者到达最大字段宽度时停止。重复的分隔符为有效字符,而重复的空白字符视为一个字符。
format 输入,指定为字符向量或字符串向量,用于确定返回参数的数量和类型。返回参数的数量是 format 的内容所指示的项目数。format 支持部分转换设定符和 C 语言 fscanf例程约定。下表列出了 format 的值。format 中的空白字符将被忽略。
各种读取格式
读取时时对应的
也可以使用内置的导入器
支持的文件内容丰富
文本文件可以在右侧预览
在最上面可以看到数据的类型
生成的调用函数
老实讲,matlab太好用了。。。喂你吃饭
这是生成脚本
%% 根据格式读取数据列。
% 该调用基于生成此代码所用的文件的结构。如果其他文件出现错误,请尝试通过导入工具重新生成代码。
dataArray = textscan(fileID, formatSpec, endRow, 'Delimiter', delimiter, 'TextType', 'string', 'ReturnOnError', false, 'EndOfLine', '\r\n');
根据格式读取数据列,太贴心了
这个函数可以读取你在截切版中复制的数据
太牛了
>> x=[1 2 3 4 5 6 7 8 9];
>> y=[9 7 6 3 -1 2 5 7 20];
>> p=polyfit(x,y,3)
p =
0.1481 -1.4030 1.8537 8.2698
>> xi=0:.2:10;
>> yi=polyval(p,xi);
>> plot(xi,yi,x,y,'r*');
数据拟合
多项式拟合,返回降幂排列的多项式系数
函数的第三个参数是拟合的最高次幂
一般拟合前先看看大致情况
用工具箱拟合
需要我们设置这些个参数
怎么说呢,这些参数的拟合是动态拟合的
我们这里提前看答案了,知道三次就拟合的比较好看
Linear model Poly3:
f(x) = p1*x^3 + p2*x^2 + p3*x + p4
Coefficients (with 95% confidence bounds):
p1 = 0.1481 (0.03346, 0.2628)
p2 = -1.403 (-3.141, 0.335)
p3 = 1.854 (-5.824, 9.531)
p4 = 8.27 (-1.093, 17.63)
Goodness of fit:
SSE: 14.19
R-square: 0.9494
Adjusted R-square: 0.919
RMSE: 1.685
最终结果,95的信度
结果相当漂亮了
x=[0;0.4;1.2;2;2;2.8;3.6;4.4;5.2;6;7.2;8;9.2;10.4;11.6;12.4;13.6;14.4;15];
y=[1;0.85;0.29;-0.27;-0.53;-0.4;-0.12;0.17;0.28;0.15;-0.03;-0.15;-0.071;0.059;0.08;0.032;-0.015;-0.02];
数学模型这种事情,肯定是拿人口模型开刀:
一开始就是长的这样
然后做对数变换,其实就是一种放缩我觉得
这个也是
几种常见的拟合方法
指数拟合
幂函数拟合
知乎一位朋友对对数这个东西的解释
https://www.zhihu.com/question/22012482