用 Matlab 神经网络工具箱拟合复杂非线性函数

Posted 木白CPP

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用 Matlab 神经网络工具箱拟合复杂非线性函数相关的知识,希望对你有一定的参考价值。

用 Matlab 神经网络工具箱拟合复杂非线性函数

首先,需要准备好数据,以一个单输入单输出的系统为例

1 从 Excel 中导入数据

如果不是从Excel中导入可以跳过该步骤

导入函数:

[num,txt,raw]=xlsread('xxx\\xxx.xlsx');

num返回的是excel中的数据;txt输出的是文本内容;raw输出的是未处理数据;圆括号是文件所在的路径。

比如有这么一个表,我需要用第一列(综合间隙)作为输出,第四列(电流)作为输入

我们就需要有两个数组变量来存储上面这两列

clc
clear all
close all

% 读入数据
[num,txt,raw]=xlsread('悬浮点数据\\悬浮点4数据汇总.xlsx');

%输入
input=num(:,4);

%输出
output=num(:,1);

一定要运行一下,确保工作区里面有这俩,否则后面导入会报错的

2 神经网络工具箱

打开 Matlab 的神经网络工具箱

或者直接输入命令:nftool

导入数据,前提是工作区内有

这里有个坑!!!
如果是单输入单输出,一定要设置成列向量,否则只有一个样本。上面是一个样本,把 input 和 output 变成列向量后变成 39550 个

对数据进行分块,多少用于训练?多少用于测试?一般选用默认即可

设置隐藏层的神经元数量,默认为10,可自定义

点击 Train 即可开始训练

训练过程中会跳出一个窗口,显示训练进度,时间等消息

训练结束后,回到刚才那个页面,连续两次点击 next。
可以把训练后的神经网络用 M语言的形式、simulink的形式、图片的形式保存下来

matlab拟合曲线的方法有几种

matlab最常用拟合曲线的函数有:
1、regress()和polyfit()适用于线性函数的拟合
2、lsqcurvefit()和nlinfit()适用于较复杂的非线性函数的拟合
3、fit()适用于最常用函数的拟合,如指数函数,傅立叶函数、高斯函数、多项式函数、幂函数、有理函数等等。类似于cftool工具箱。
参考技术A 方法/步骤

运行Matlab软件。
在工作空间中存入变量的实验数据。具体如下:
可以直接用矩阵来存放数据,直接在命令窗口输入
x=[数据x1,数据x2,...,数据xn];
y=[数据y1,数据y2,...,数据yn];
当数据较多时,可以从excel,txt等文件中导入。

把数据存入工作空间后,在命令窗口中输入cftool,回车运行。

在这个拟合工具窗口的左边,选择变量,即分别选择x,y。

选择拟合的曲线类型,一般是线性拟合,高斯曲线,平滑曲线等,根据需要选择。
选择完后会自动完成拟合,并且给出拟合函数表达式。

点击菜单栏中的“file”,选择“print to figure"进行画图。

在图形窗口中,可以对图形显示模式进行修改,如添加标题,坐标名称等。

最后得到比较完整的图形曲线。点击”file"中的“save"进行保存。

以上是关于用 Matlab 神经网络工具箱拟合复杂非线性函数的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB神经网络的目录

非线性曲线的matlab拟合?

想用matlab确定拟合函数的最佳次数?

怎么用matlab进行非线性的多元函数拟合?

如何用matlab数据拟合函数?

matlab中如何拟合光滑曲线