首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MATLAB在数学建模中的应用.1

MATLAB在数学建模中的应用.1

作者头像
云深无际
发布2021-09-14 15:49:07
发布2021-09-14 15:49:07
6280
举报
文章被收录于专栏:云深之无迹云深之无迹

为了和Excel联动,可以在工具目录打开这个xlam的文件

接着在excel里面就会出现这个

代码语言:javascript
复制
https://www.mathworks.com/help/matlab/ref/load.html?s_tid=srchtitle_load_1

一般来说,第一个语法形式是要用的最基础的写法

可以看到是加载两种文件

加载文件时的名字

太离谱了,数据得自己输入

代码语言:javascript
复制
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太好用了。。。喂你吃饭

这是生成脚本

代码语言:javascript
复制
%% 根据格式读取数据列。
% 该调用基于生成此代码所用的文件的结构。如果其他文件出现错误,请尝试通过导入工具重新生成代码。
dataArray = textscan(fileID, formatSpec, endRow, 'Delimiter', delimiter, 'TextType', 'string', 'ReturnOnError', false, 'EndOfLine', '\r\n');

根据格式读取数据列,太贴心了

这个函数可以读取你在截切版中复制的数据

太牛了

代码语言:javascript
复制
>> 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*');

数据拟合

多项式拟合,返回降幂排列的多项式系数

函数的第三个参数是拟合的最高次幂

一般拟合前先看看大致情况

用工具箱拟合

需要我们设置这些个参数

怎么说呢,这些参数的拟合是动态拟合的

我们这里提前看答案了,知道三次就拟合的比较好看

代码语言:javascript
复制
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的信度

结果相当漂亮了

代码语言:javascript
复制
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];

数学模型这种事情,肯定是拿人口模型开刀:

一开始就是长的这样

然后做对数变换,其实就是一种放缩我觉得

这个也是

几种常见的拟合方法

指数拟合

幂函数拟合

知乎一位朋友对对数这个东西的解释

代码语言:javascript
复制
https://www.zhihu.com/question/22012482
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档