matlab r阶分量归一化因子,matlab神经网络、归一化和反归一的问题

由于课题需要,弄了一个matlab小程序如下:

close all

clear

echo on

clc

clc

P=[0.001,0.178,0.362,0.012,0.447,1.000,0.989;0.465,0.128,0.436,0.079,0.001,1.000,0.668;0.031,0.001,0.254,1.000,0.016,0.378,0.171;0.001,0.198,0.373,0.260,0.786,0.228,0.979;1.000,0.884,0.563,0.119,0.311,0.508,0.001];

T=[0.010,1.000,0.406,0.314,0.056,0.258,0.001;0.075,0.306,0.061,0.178,0.016,0.001,1.000];

clc

net=newff(minmax(P),[3,2],{'logsig','tansig'},'trainlm');

inputWeights=net.IW{1,1}

inputbias=net.b{1}

layerWeights=net.IW{1,1}

layerbias=net.b{2}

clc

net.trainParam.show = 500;

net.trainParam.lr = 0.05;

net.trainParam.mc = 0.9;

net.trainParam.epochs = 10000;

net.trainParam.goal = 1e-4;

clc[net,tr]=train(net,P,T);

clc

A=sim(net,P)

E=T-A

MSE=mse(E)

clc

R=[0.4201,1.0000,0.0010;0.5823,0.0010,1.0000;1.0000,0.0010,0.8349;1.0000,0.0010,0.4439;0.0010,1.0000,0.3047];

X=[0.3199,0.0010,1.0000;1.0000,0.0010,0.1134];

C=sim(net,R)

E=C-X

MSE=mse(E)

echo off

输入的数据P,T,R,都手动归一化了,结果输出的C中间有负数,是不是有问题呀?输出的结果怎么归一化?归一化的公式是x=0.001+(1-0.001)*(X-Xmin)/(Xmax-Xmin);反归一化是它的反函数,可是这个反函数怎么能求得?

特向各位大神求助!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在MATLAB中,归一化是将一组数据按比例缩放到特定的区间范围中,使得数据的取值范围统一和标准化。常见的归一化方法有线性归一化和零均值归一化。 线性归一化是将数据按照线性映射的方式缩放到[0, 1]的范围内。具体的计算公式如下: $$X_{\text{norm}} = \frac{X - \min(X)}{\max(X) - \min(X)}$$ 其中,$X$为原始数据,$X_{\text{norm}}$为归一化后的数据,$\min(X)$和$\max(X)$分别是原始数据的最小值和最大值。 零均值归一化是将数据按照均值为0,标准差为1的方式进行缩放。具体的计算公式如下: $$X_{\text{norm}} = \frac{X - \text{mean}(X)}{\text{std}(X)}$$ 其中,$X$为原始数据,$\text{mean}(X)$和$\text{std}(X)$分别是原始数据的均值和标准差。 反归一化就是将归一化后的数据恢复到原始的数据范围。反归一化过程的具体步骤与归一化过程相反。对于线性归一化反归一化的计算公式如下: $$X = X_{\text{norm}} \times (\max(X) - \min(X)) + \min(X)$$ 对于零均值归一化反归一化的计算公式如下: $$X = X_{\text{norm}} \times \text{std}(X) + \text{mean}(X)$$ 通过反归一化,我们可以将归一化的数据再次还原到原始的数据范围,以便进行后续的分析和应用。 ### 回答2: 在MATLAB中,归一化反归一化是对数据进行预处理和还原操作的重要技术。 归一化是将数据按照一定的比例缩放到特定的区间范围内,常用的方法有最小-最大归一化和Z-score归一化。 最小-最大归一化将数据线性缩放到[0,1]的区间范围内,公式为: Y = (X - Xmin) / (Xmax - Xmin) 其中,X表示原始数据,Xmin表示数据的最小值,Xmax表示数据的最大值,Y表示归一化后的数据。 Z-score归一化通过计算数据的均值和标准差,将数据转化为标准正态分布的值,公式为: Y = (X - μ) / σ 其中,X表示原始数据,μ表示数据的均值,σ表示数据的标准差,Y表示归一化后的数据。 反归一化则是将归一化后的数据还原为原始数据,方法为根据归一化的方法和参数反向计算得到原始数据。 最小-最大反归一化公式为: X = Y * (Xmax - Xmin) + Xmin Z-score反归一化公式为: X = Y * σ + μ 其中,X表示原始数据,Y表示归一化后的数据,Xmin、Xmax、μ和σ分别表示归一化反归一化的参数。 通过MATLAB中提供的函数和工具,可以方便地实现数据的归一化反归一化操作。 ### 回答3: 归一化反归一化是在数据处理过程中常用的方法。在MATLAB中,我们可以通过以下方式实现归一化反归一化。 1. 归一化归一化是将数据映射到一个特定的范围,常用的归一化方法是将数据映射到0和1之间或-1和1之间。在MATLAB中,可以通过以下步骤实现归一化: a. 找到数据的最小值和最大值,可以使用min()和max()函数来获取最小和最大值。 b. 将数据减去最小值,并除以最大值减去最小值。这样可以将数据映射到0和1之间。可以使用以下公式实现:normalized_data = (data - min(data)) / (max(data) - min(data)). c. 现在,normalized_data中的数据已经被归一化到0和1之间。 2. 反归一化: 反归一化是将归一化的数据映射回原始的数据范围。在MATLAB中,可以通过以下步骤实现反归一化: a. 找到原始数据的最小值和最大值。 b. 将归一化的数据乘以最大值减去最小值,并加上最小值。这样可以将归一化的数据映射回原始的数据范围。可以使用以下公式实现:original_data = normalized_data * (max(data) - min(data)) + min(data). c. 现在,original_data中的数据已经被反归一化回原始的数据范围。 总结:归一化可以将数据映射到特定的范围,常用的是将数据映射到0和1之间或-1和1之间。反归一化可以将归一化的数据映射回原始的数据范围。在MATLAB中,可以使用min()、max()和一些简单的数学运算来实现归一化反归一化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值