当前位置:   article > 正文

matlab数据归一化与反归一化处理_反归一化原理matlab

反归一化原理matlab

假如数据实际取值范围为 X i ∈ [ − π    π ] , i = 1 , 2 , 3 X_i \in [-\pi \ \ \pi], i=1,2,3 Xi[π  π],i=1,2,3,变量服从正态分布

示例如下:

%% 数据归一化处理及其概率密度函数
clear
clc
Mu = [0 0 0];  % 均值
Sigma = [1 1 1];  % 标准差
CovarianceMatrix = Sigma;
CovarianceMatrix = diag(CovarianceMatrix);    % 转换为对角矩阵
N = 100000;       % 样本点数目
X = lhsnorm(Mu, CovarianceMatrix, N);   % 采用lhsnorm生成均值为Mu,标准差为Sigma的矩阵
% 绘制归一化之前的X的概率密度函数
[f,xi] = ksdensity(X(:,1));  % 计算概率密度函数,返回在xi点的概率密度f
pic1 = plot(xi,f,'LineWidth',2,'LineStyle','-','color','K');   % 绘制概率密度曲线
hold on   % 保留当前figure,实现图层叠加
%% 归一化数据,并将数据放缩到实际取值范围
[x_pdf,ps1]=mapminmax(X' ,0 ,1);        % mapminmax是按照行进行归一化的,因此要对矩阵X进行转置
x_pdf = x_pdf';                         % 归一化后再将矩阵X转置回来
x_pdf = -pi+2.*pi.*x_pdf;               % 放缩到原函数取值范围
% 绘制归一化之后的x_pdf的概率密度函数
[f,xi] = ksdensity(x_pdf(:,1));
pic2 = plot(xi,f,'LineWidth',2,'LineStyle','-','color','r');% 绘制概率密度曲线
hold on

%% 反归一化数据,注意一定要先把数据从实际范围归一化(或放缩)到[0 1]之后,再反归一化处理 
[x_pdf,ps2]=mapminmax(x_pdf' ,0 ,1);  % 首先将数据归一化到放缩前的范围
x_pdf = x_pdf';
X_re = mapminmax('reverse',x_pdf',ps1); % 反归一化到原分布下的数据
X_re = X_re';
% 绘制反归一化之后的x_pdf的概率密度函数
[f,xi] = ksdensity(X_re(:,1)); % 计算概率密度函数,返回在xi点的概率密度f
pic3 = plot(xi,f,'color','g','Marker','o');%绘制概率密度曲线
legend('原始数据','归一化后数据','反归一化后数据')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/90043
推荐阅读
相关标签
  

闽ICP备14008679号