有关mapminmax的用法详解
关于matlab无法调用mapminmax解决办法

关于matlab系列无法调用mapminmax函数的解决方法matlab7.0/7.1以及以下版本的函数库中没有mapminmax函数,所以编程调用这个函数时会提示未定义该函数,查了写资料,但是网友回答的太不靠谱了,我自己做了下总结,方法如下:1.matlab升级到7.8或者以上版本,这些版本的matlab中自带有mapminmax函数,可以直接调用。
2.不想升级的话,我们就要自己写mapminmax函数了,这里我提供mapminmax函数的源程序如下:function [out1,out2] = mapminmax(in1,in2,in3,in4)%MPMINMAX Map matrix row minimum and maximum values to [-1 1].%% Syntax%% [y,ps] = mapminmax(x,ymin,ymax)% [y,ps] = mapminmax(x,fp)% y = mapminmax('apply',x,ps)% x = mapminmax('reverse',y,ps)% dx_dy = mapminmax('dx',x,y,ps)% dx_dy = mapminmax('dx',x,[],ps)% name = mapminmax('name');% fp = mapminmax('pdefaults');% names = mapminmax('pnames');% mapminmax('pcheck', fp);%% Description%% MAPMINMAX processes matrices by normalizing the minimum and maximum valu es% of each row to [YMIN, YMAX].%% MAPMINMAX(X,YMIN,YMAX) takes X and optional parameters,% X - NxQ matrix or a 1xTS row cell array of NxQ matrices.% YMIN - Minimum value for each row of Y. (Default is -1)% YMAX - Maximum value for each row of Y. (Default is +1)% and returns,% Y - Each MxQ matrix (where M == N) (optional).% PS - Process settings, to allow consistent processing of values.%% MAPMINMAX(X,FP) takes parameters as struct: FP.ymin, FP.ymax.% MAPMINMAX('apply',X,PS) returns Y, given X and settings PS.% MAPMINMAX('reverse',Y,PS) returns X, given Y and settings PS.% MAPMINMAX('dx',X,Y,PS) returns MxNxQ derivative of Y w/respect to X.% MAPMINMAX('dx',X,[],PS) returns the derivative, less efficiently.% MAPMINMAX('name') returns the name of this process method.% MAPMINMAX('pdefaults') returns default process parameter structure.% MAPMINMAX('pdesc') returns the process parameter descriptions.% MAPMINMAX('pcheck',fp) throws an error if any parameter is illegal.%% Examples%% Here is how to format a matrix so that the minimum and maximum% values of each row are mapped to default interval [-1,+1].%% x1 = [1 2 4; 1 1 1; 3 2 2; 0 0 0]% [y1,ps] = mapminmax(x1)%% Next, we apply the same processing settings to new values.%% x2 = [5 2 3; 1 1 1; 6 7 3; 0 0 0]% y2 = mapminmax('apply',x2,ps)%% Here we reverse the processing of y1 to get x1 again.%% x1_again = mapminmax('reverse',y1,ps)%% Algorithm%% It is assumed that X has only finite real values, and that% the elements of each row are not all equal.%% y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin;%% See also FIXUNKNOWNS, MAPSTD, PROCESSPCA, REMOVECONSTANTROWS % Copyright 1992-2006 The MathWorks, Inc.% $Revision: 1.1.6.6 $% Process function boiler plate scriptboiler_processNamefunction n = namen = 'Map Minimum and Maximum'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Parameter Defaultsfunction fp = param_defaults(values)if length(values)>=1, fp.ymin = values{1}; else fp.ymin = -1; endif length(values)>=2, fp.ymax = values{2}; else fp.ymax = fp.ymin + 2; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Parameter Namesfunction names = param_names()names = {'Mininum value for each row of Y.', 'Maximum value for each row of Y. '}; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Parameter Checkfunction err = param_check(fp)mn = fp.ymin;mx = fp.ymax;if ~isa(mn,'double') || any(size(mn)~=[1 1]) || ~isreal(mn) || ~isfinite(mn)err = 'ymin must be a real scalar value.';elseif ~isa(mx,'double') || any(size(mx)~=[1 1]) || ~isreal(mx) || ~isfinite(mx) || (m x <= mn)err = 'ymax must be a real scalar value greater than ymin.';elseerr = '';end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% New Processfunction [y,ps] = new_process(x,fp)if any(any(~isfinite(x)))error('Use FIXUNKNOWNS to replace NaN values in X.');end = 'mapminmax';ps.xrows = size(x,1);ps.yrows = ps.xrows;ps.xmax = max(x,[],2);ps.xmin = min(x,[],2);ps.ymax = fp.ymax;ps.ymin = fp.ymin;if any(ps.xmax == ps.xmin)warning('Use REMOVECONSTANTROWS to remove rows with constant values.');endy = apply_process(x,ps);Apply Processfunction y = apply_process(x,ps)Q = size(x,2);oneQ = ones(1,Q);rangex = ps.xmax-ps.xmin;rangex(rangex==0) = 1; % Avoid divisions by zerorangey = ps.ymax-ps.ymin;y = rangey * (x-ps.xmin(:,oneQ))./rangex(:,oneQ) + ps.ymin; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Reverse Processfunction x = reverse_process(y,ps)Q = size(y,2);oneQ = ones(1,Q);rangex = ps.xmax-ps.xmin;rangey = ps.ymax-ps.ymin;x = rangex(:,oneQ) .* (y-ps.ymin)*(1/rangey) + ps.xmin(:,oneQ); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Derivative of Y w/respect to Xfunction dy_dx = derivative(x,y,ps);Q = size(x,2);rangex = ps.xmax-ps.xmin;rangey = ps.ymax-ps.ymin;d = diag(rangey ./ rangex);dy_dx = d(:,:,ones(1,Q));复制以上代码,在matlab中生成M文件,文件名取为mapminmax. m,然后放到current Directory路径中的work文件夹里面(这是我的工作空间),你们也可以放到自己的工作空间文件夹里面,这还没完,编译程序是还会提示木有boiler_process函数的提示,boiler_process函数源程序如下:% PROCESS FUNCTION BOILERPLATE CODE% Copyright 2005-2007 The MathWorks, Inc.% TODO - Add size checking for X and Yif (nargin < 1), error('NNET:Arguments','Not enough arguments.'); endif isstr(in1)switch lower(in1)case 'name',if nargin > 1, error('NNET:Arguments','Too many input arguments for ''name'' action '), endif (nargout > 1), error('NNET:Arguments','Too many output arguments for ''name'' a ction'), endout1 = name;case 'pdefaults'if nargin > 2, error('NNET:Arguments','Too many input arguments for ''pdefaults'' act ion'), endif nargin < 2, in2 = {}; endif (nargout > 1), error('NNET:Arguments','Too many output arguments for ''pdefaults' ' action'), endout1 = param_defaults(in2);case 'pnames'if nargin > 1, error('NNET:Arguments','Too many input arguments for ''pnames'' acti on'), endif (nargout > 1), error('NNET:Arguments','Too many output arguments for ''pnames'' action'), endout1 = param_names;case 'pcheck'if (nargin < 2), error('NNET:Arguments','Not enough input arguments for ''pcheck'' a ction'), endif nargin > 2, error('NNET:Arguments','Too many input arguments for ''pcheck'' actio n'), endif (nargout > 1), error('NNET:Arguments','Too many output arguments for ''pcheck'' action'), endif ~isa(in2,'struct'), error('NNET:Arguments','Parameters are not a struct.'); end names1 = fieldnames(param_defaults({}));names2 = fieldnames(in2);if length(names1) ~= length(names2), error('NNET:Arguments','Incorrect number of parameters.'); endnames1 = sort(names1);names2 = sort(names2);for i=1:length(names1)if ~strcmp(names1{i},names2{i}), error('NNET:Arguments',['Parameter field name is n ot correct:' names2{i}]); endendout1 = param_check(in2);if (nargout == 0) && ~isempty(out1)error('NNET:Arguments',out1);endcase 'apply'if (nargin < 3), error('NNET:Arguments','Not enough input arguments for ''apply'' acti on.'); endif (nargin > 3), error('NNET:Arguments','Too many input arguments for ''apply'' actio n'), endif (nargout > 1), error('NNET:Arguments','Too many output arguments for ''apply'' action'), endc = iscell(in2);if cif (size(in2,1) ~= 1)error('NNET:Arguments','Cell array X must have only one row')endcols = size(in2,2);colSizes = zeros(1,cols);for i=1:colscolSizes(i) = size(in2{1,i},2);endin2 = cell2mat(in2);elseif ~isa(in2,'double')error('NNET:Arguments','X must be a matrix or a row cell array')endout1 = apply_process(in2,in3);if cout1 = mat2cell(out1,size(out1,1),colSizes);endcase 'reverse'if (nargin < 3), error('NNET:Arguments','Not enough input arguments for ''reverse'' a ction.'); endif (nargin > 3), error('NNET:Arguments','Too many input arguments for ''reverse'' act ion'), endif (nargout > 1), error('NNET:Arguments','Too many output arguments for ''reverse'' action'), endc = iscell(in2);if cif (size(in2,1) ~= 1)error('NNET:Arguments','Cell array X must have only one row')endcols = size(in2,2);colSizes = zeros(1,cols);for i=1:cols,colSizes(i) = size(in2{1,i},2); endin2 = cell2mat(in2);elseif ~(isnumeric(in2) || islogical(in2))error('NNET:Arguments','Y must be a matrix or a row cell array')endout1 = reverse_process(in2,in3);if cout1 = mat2cell(out1,size(out1,1),colSizes);endout2 = in3;case 'dx'if (nargin < 4), error('NNET:Arguments','Not enough input arguments for ''dx'' action. '); endif (nargout > 1), error('NNET:Arguments','Too many output arguments for ''dx'' actio n'), endif isempty(in3)in3 = apply_process(in2,in4);endout1 = derivative(in2,in3,in4);case 'dx_dy'if (nargin < 4), error('NNET:Arguments','Not enough input arguments for ''dx'' action. '); endif (nargout > 1), error('NNET:Arguments','Too many output arguments for ''dx'' actio n'), endif isempty(in3)in3 = apply_process(in2,in4);endout1 = reverse_derivative(in2,in3,in4);case 'simulink_params'out1 = simulink_params(in2);case 'simulink_reverse_params'out1 = simulink_reverse_params(in2);otherwiseerror('NNET:Arguments',['First argument is an unrecognized action string: ' in1]); endreturnendif (nargin < 2)in2 = param_defaults({});elseif isa(in2,'struct')if (nargin > 2),error('NNET:Arguments','Too many input arguments when second arg ument is parameter structure FP'), endelsenumFields = length(fieldnames(param_defaults({})));if (nargin > 1 + numFields), error('NNET:Arguments','Too many input argument'), en dvalues = {in2};if (nargin > 2), values{2} = in3; endif (nargin > 3) values = [values varargin]; endin2 = param_defaults(values);enderr = param_check(in2);if ~isempty(err)error('NNET:Arguments',err)endc = iscell(in1);if cif (size(in1,1) ~= 1)error('NNET:Arguments','Cell array X must have only one row')endcols = size(in1,2);colSizes = zeros(1,cols);for i=1:cols,colSizes(i) = size(in1{1,i},2); endin1 = cell2mat(in1);elseif ~isa(in1,'double')error('NNET:Arguments','X must be a matrix or a row cell array')end[out1,out2] = new_process(in1,in2); y =[]; % MATLAB BUG if [out1,y] =...if cout1 = mat2cell(out1,size(out1,1),colSizes);end复制以上代码在matlab中生成m文件,并取名boiler_process.m。
MapMatrix处理A3空三后数据操作手册

matlab数据归一化汇总

M=sse(E)
N=mse(E)
pause
clc
p2=[1046.20 1046.05 1.52 1.538 0.75;
1046.05 1046.85 1.538 1.510 0.75;
1046.85 1046.60 1.510 1.408 0.75;
1046.60 1046.77 1.408 1.403 0.75;
(1)premnmx、postmnmx、tramnmx
(2)prestd、poststd、trastd
(3)是用matlab语言自己编程。
premnmx指的是归一到[-1 1],prestd归一到单位方差和零均值。(3)关于自己编程一般是归一到[0.1 0.9] 。具体用法见下面实例。
为什么要用归一化呢?首先先说一个概念,叫做奇异样本数据,所谓奇异样本数据数据指的是相对于其他输入样本特别大或特别小的样本矢量。
即对x1采用的规范化映射为: f: 2*(x-1)/(4-1)+(-1),(记录在ps中),对x2也要采取这个映射.
x2 = [5,2,3],用这个映射我们来算一下.
y2(1) = 2(5-1)/(4-1)+(-1) = 5/3 = 1+2/3 = 1.66667
y2(2) = 2(2-1)/(4-1)+(-1) = -1/3 = -0.3333
我们来看一下是不是: 对于x1而言 xmin = 1,xmax = 4;
则y(1) = 2*(1 - 1)/(4-1)+(-1) = -1;
y(2) = 2*(2 - 1)/(4-1)+(-1) = -1/3 = -0.3333;
mapmutation函数

mapmutation函数摘要:mapmutation函数的介绍与使用方法一、概述1.mapmutation函数的定义2.函数的作用与意义二、mapmutation函数的参数1.数据源2.映射函数3.迭代次数三、mapmutation函数的用法示例1.基本用法2.进阶用法四、mapmutation函数的优缺点1.优点2.缺点五、总结与建议1.总结2.适用场景3.注意事项正文:一、概述mapmutation函数是Python中一款强大的数据处理工具,它主要用于对数据进行映射操作。
通过mapmutation函数,我们可以轻松地对数据集中的每个元素应用一个指定的函数,从而实现数据的转换或处理。
本文将详细介绍mapmutation函数的定义、作用、参数以及用法示例等内容。
二、mapmutation函数的定义mapmutation函数是Python内置的高阶函数,它接收一个数据源、一个映射函数和一个可选的迭代次数作为参数。
函数的定义如下:```pythonmap(lambda x: func(x), iterable)```其中,- 数据源:iterable,待处理的数据集,通常为一个列表或元组。
- 映射函数:func,用于处理数据集中的每个元素的操作。
- 迭代次数:可选参数,用于指定映射函数对数据集应用的次数。
默认值为1次。
三、mapmutation函数的用法示例1.基本用法以下是一个简单的mapmutation函数基本用法示例,我们将使用mapmutation函数对一个整数列表进行平方操作:```pythondef square(x):return x * xumbers = [1, 2, 3, 4, 5]squared_numbers = map(square, numbers)print(list(squared_numbers)) # 输出:[1, 4, 9, 16, 25]```2.进阶用法在实际应用中,我们还可以通过传递一个迭代次数参数来控制映射函数对数据集应用的次数。
归一化函数mapminmax,mapstd

归⼀化函数mapminmax,mapstdmapminmax Process matrices by mapping row minimum and maximum values to [-1 1] Syntax[Y,PS] = mapminmax(X,YMIN,YMAX)[Y,PS] = mapminmax(X,FP)Y = mapminmax('apply',X,PS)X = mapminmax('reverse',Y,PS)dy_dx = mapminmax('dy_dx',X,Y,PS)dx_dy = mapminmax('dx_dy',X,Y,PS)Descriptionmapminmax processes matrices by normalizing the minimum and maximum values of each row to [YMIN, YMAX].[Y,PS] = mapminmax(X,YMIN,YMAX) takes X and optional parametersX N-by-Q matrix or a 1-by-TS row cell array of N-by-Q matricesYMIN Minimum value for each row of Y (default is –1)YMAX Maximum value for each row of Y (default is +1)and returnsY Each M-by-Q matrix (where M==N) (optional)PSProcess settings that allow consistent processing of values[Y,PS] = mapminmax(X,FP) takes parameters as a struct: FP.ymin, FP.ymax.Y = mapminmax('apply',X,PS) returns Y, given X and settings PS.X = mapminmax('reverse',Y,PS) returns X, given Y and settings PS.dy_dx = mapminmax('dy_dx',X,Y,PS) returns the M-by-N-by-Q derivative of Y with respect to X.dx_dy = mapminmax('dx_dy',X,Y,PS) returns the reverse derivative.ExamplesHere is how to format a matrix so that the minimum and maximum values of each row are mapped to default interval [-1,+1]. x1 = [1 2 4; 1 1 1; 3 2 2; 0 0 0][y1,PS] = mapminmax(x1)Next, apply the same processing settings to new values.x2 = [5 2 3; 1 1 1; 6 7 3; 0 0 0]y2 = mapminmax('apply',x2,PS)Reverse the processing of y1 to get x1 again.x1_again = mapminmax('reverse',y1,PS)AlgorithmsIt is assumed that X has only finite real values, and that the elements of each row are not all equal. (If xmax=xmin or if either xmax or xmin are non-finite, then y=x and no change occurs.)y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin;DefinitionsBefore training, it is often useful to scale the inputs and targets so that they always fall within a specified range. The function mapminmax scales inputs and targets so that they fall in the range [–1,1]. The following code illustrates how to use this function.[pn,ps] = mapminmax(p);[tn,ts] = mapminmax(t);net = train(net,pn,tn);The original network inputs and targets are given in the matrices p and t. The normalized inputs and targets pn and tn that are returned will all fall in the interval [–1,1]. Thestructures ps and ts contain the settings, in this case the minimum and maximum values of the original inputs and targets. After the network has been trained, the ps settings should be used to transform any future inputs that are applied to the network. They effectively become a part of the network, just like the network weights and biases.If mapminmax is used to scale the targets, then the output of the network will be trained to produce outputs in the range [–1,1]. To convert these outputs back into the same units that were used for the original targets, use the settings ts. The following code simulates the network that was trained in the previous code, and then converts the network output back into the original units.an = sim(net,pn);a = mapminmax('reverse',an,ts);The network output an corresponds to the normalized targets tn. The unnormalized network output a is in the same units as the original targets t.If mapminmax is used to preprocess the training set data, then whenever the trained network is used with new inputs they should be preprocessed with the minimum and maximums that were computed for the training set stored in the settings ps. The following code applies a new set of inputs to the network already trained.pnewn = mapminmax('apply',pnew,ps);anewn = sim(net,pnewn);anew = mapminmax('reverse',anewn,ts);For most networks, including feedforwardnet, these steps are done automatically, so that you only need to use the sim command.See Alsofixunknowns | mapstd | processpca1.在最新版的matlab⾥⾯共有两个归⼀化函数:mapminmax()和mapstd(),其中第⼀个函数是归⼀化到[0 1]范围,后⼀个的原理我也不太懂,但归⼀后的数据较规整,⽐第⼀个好⽤.各⾃的归⼀化格式如下:[pn,ps]=mapminmax(P)或=mapstd(P) %P是输⼊向量[tn, ts]=mapminmax(t)或=mapstd(t) %t 是⽬标向量在训练完后,对测试样本归⼀化格式为:pnt=mapminmax('apply',pt,ps)或=mapstd('apply',pt,ps)仿真后反归⼀化格式则为:out=mapminmax('reverse',An,ts)或=mapstd('reverse',An,ts);其中An 为sim函数的输出2.要是⽤的是⾃⼰编的归⼀化函数,如pn=(x-min)/(max-min),其中min<x<max;min和max可以是样本(所有样本)各输⼊输出属性列的最⼩和最⼤值,也可以是⽐各⾃最⼩值更⼩和⽐最⼤值更⼤的数(最好这样选择),反归⼀化的话,则可以将求归⼀化函数的反函数即可实现反归⼀化输出值.。
matlab中mapminmax函数用法

matlab中mapminmax函数用法在MATLAB中,mapminmax函数用于将数据从一种表示形式映射到另一种表示形式,其范围在最小值和最大值之间。
该函数对数据进行了预处理,使其在特定的范围内,以便于后续的分析和处理。
本文将详细介绍mapminmax函数的用法。
一、mapminmax函数概述mapminmax函数是MATLAB中用于数据映射的内置函数之一。
它可以将数据从一种表示形式映射到另一种表示形式,以便于后续的数据分析和处理。
该函数可以将数据从一种表示形式映射到另一种表示形式,同时保持数据的比例不变。
二、mapminmax函数的使用方法在使用mapminmax函数之前,需要先确定输入数据的范围和输出数据的范围。
输入数据的范围通常由数据的分布和精度来确定,输出数据的范围可以根据需要进行设置。
具体使用方法如下:1. 输入数据范围确定在使用mapminmax函数之前,需要确定输入数据的范围。
可以通过观察数据分布和精度来确定输入数据的范围。
如果输入数据是连续的,可以使用MATLAB内置的函数来确定数据的范围。
2. 输出数据范围的设置在使用mapminmax函数时,需要设置输出数据的范围。
输出数据的范围可以根据需要进行设置,例如,可以将输出数据映射到指定的范围内,或者将输出数据映射到指定的区间内。
3. 调用mapminmax函数在确定了输入数据的范围和输出数据的范围之后,可以使用mapminmax函数将数据映射到指定的范围内。
具体调用方法如下:`[outputData,outputMin,outputMax] =mapminmax(inputData,inputMin,inputMax,outputMin,outputMax);`其中,inputData为输入数据,inputMin和inputMax分别为输入数据的最小值和最大值,outputMin和outputMax分别为输出数据的最小值和最大值,outputData为输出数据。
gprmax in语法

gprmax in语法
GprMax 是一款用于地质雷达(地质雷达)建模和仿真的开源软件。
以下是GprMax 输入文件的一些基本语法元素:
1.Model:定义地质雷达模型的整体属性,例如模型的尺寸、
网格大小等。
[Model] name = MyModel ...
2.Grid:定义模型中的网格参数,包括网格的大小、分辨率
等。
[Grid] ...
3.Medium:定义模型中不同区域的介电常数等电磁参数。
[Medium] ...
4.Antenna:定义天线的位置、方向和波形等属性。
[Antenna] ...
5.Simulation:定义仿真的参数,如时间步长、仿真时间等。
[Simulation] ...
6.Output:定义仿真结果的输出参数,包括波形数据、二维切
片、三维体绘图等。
[Output] ...
7.Events:定义模拟中的事件,如激发事件、记录事件等。
[Events] ...
这只是GprMax 输入文件的基本框架,具体的语法和参数取决于您的模型和仿真需求。
要详细了解GprMax 的语法和参数,建议查阅GprMax 的官
方文档,其中包含了详细的说明和示例。
在编写输入文件时,请确保遵循正确的语法规则以确保成功进行地质雷达建模和仿真。
有关mapminmax的用法详解

有关mapminmax的用法详解============外一篇有关mapminmax的用法详解by faruto==================================几个要说明的函数接口:[Y,PS] = mapminmax(X)[Y,PS] = mapminmax(X,FP)Y = mapminmax('apply',X,PS)X = mapminmax('reverse',Y,PS)用实例来讲解,测试数据 x1 = [1 2 4], x2 = [5 2 3]; >> [y,ps] = mapminmax(x1)y =-1.0000 -0.3333 1.0000ps =name: 'mapminmax'xrows: 1xmax: 4xmin: 1xrange: 3yrows: 1ymax: 1ymin: -1yrange: 2其中y是对进行某种规范化后得到的数据,这种规范化的映射记录在结构体ps中.让我们来看一下这个规范化的映射到底是怎样的?AlgorithmIt is assumed that X has only finite real values, and that the elements of each row are not all equal.∙y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin;∙[关于此算法的一个问题.算法的假设是每一行的元素都不想相同,那如果都相同怎么办?实现的办法是,如果有一行的元素都相同比如xt = [1 1 1],此时xmax = xmin = 1,把此时的变换变为y =ymin,matlab内部就是这么解决的.否则该除以0了,没有意义!]也就是说对x1 = [1 2 4]采用这个映射f:2*(x-xmin)/(xmax-xmin)+(-1),就可以得到y =[ -1.0000 -0.3333 1.0000]我们来看一下是不是: 对于x1而言xmin = 1,xmax = 4;则y(1) = 2*(1 - 1)/(4-1)+(-1) = -1;y(2) = 2*(2 - 1)/(4-1)+(-1) = -1/3 = -0.3333;y(3) = 2*(4-1)/(4-1)+(-1) = 1;看来的确就是这个映射来实现的.对于上面algorithm中的映射函数其中ymin,和ymax 是参数,可以自己设定,默认为-1,1;比如:>>[y,ps] = mapminmax(x1);>> ps.ymin = 0;>> [y,ps] = mapminmax(x1,ps)y =0 0.3333 1.0000ps =name: 'mapminmax'xrows: 1xmax: 4xmin: 1xrange: 3yrows: 1ymax: 1ymin: 0yrange: 1则此时的映射函数为: f: 1*(x-xmin)/(xmax-xmin)+(0),是否是这样的这回你可自己验证.O(∩_∩)O如果我对x1 = [1 2 4]采用了某种规范化的方式, 现在我要对x2 = [5 2 3]采用同样的规范化方式[同样的映射],如下可办到:>> [y1,ps] = mapminmax(x1);>> y2 = mapminmax('apply',x2,ps)y2 =1.6667 -0.3333 0.3333即对x1采用的规范化映射为: f: 2*(x-1)/(4-1)+(-1),(记录在ps中),对x2也要采取这个映射.x2 = [5,2,3],用这个映射我们来算一下.y2(1) = 2(5-1)/(4-1)+(-1) = 5/3 = 1+2/3 = 1.66667y2(2) = 2(2-1)/(4-1)+(-1) = -1/3 = -0.3333y2(3) = 2(3-1)/(4-1)+(-1) = 1/3 = 0.3333X = mapminmax('reverse',Y,PS)的作用就是进行反归一化,讲归一化的数据反归一化再得到原来的数据: >> [y1,ps] = mapminmax(x1);>> xtt = mapminmax('reverse',y1,ps)xtt =1 2 4此时又得到了原来的x1(xtt = x1);。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
有关mapminmax的用法详解
============外一篇有关mapminmax的用法详解by faruto==================================
几个要说明的函数接口:
[Y,PS] = mapminmax(X)
[Y,PS] = mapminmax(X,FP)
Y = mapminmax('apply',X,PS)
X = mapminmax('reverse',Y,PS)
用实例来讲解,测试数据 x1 = [1 2 4], x2 = [5 2 3]; >> [y,ps] = mapminmax(x1)
y =
-1.0000 -0.3333 1.0000
ps =
name: 'mapminmax'
xrows: 1
xmax: 4
xmin: 1
xrange: 3
yrows: 1
ymax: 1
ymin: -1
yrange: 2
其中y是对进行某种规范化后得到的数据,这种规范化的映射记录在结构体ps中.让我们来看一下这个规范化的映射到底是怎样的?
Algorithm
It is assumed that X has only finite real values, and that the elements of each row are not all equal.
∙y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin;
∙[关于此算法的一个问题.算法的假设是每一行的元素都不想相同,那如果都相同怎么办?实现的办法是,
如果有一行的元素都相同比如xt = [1 1 1],此时
xmax = xmin = 1,把此时的变换变为y =
ymin,matlab内部就是这么解决的.否则该除以0了,没有意义!]
也就是说对x1 = [1 2 4]采用这个映射f:
2*(x-xmin)/(xmax-xmin)+(-1),就可以得到y =
[ -1.0000 -0.3333 1.0000]
我们来看一下是不是: 对于x1而言xmin = 1,xmax = 4;
则y(1) = 2*(1 - 1)/(4-1)+(-1) = -1;
y(2) = 2*(2 - 1)/(4-1)+(-1) = -1/3 = -0.3333;
y(3) = 2*(4-1)/(4-1)+(-1) = 1;
看来的确就是这个映射来实现的.
对于上面algorithm中的映射函数其中ymin,和ymax 是参数,可以自己设定,默认为-1,1;
比如:
>>[y,ps] = mapminmax(x1);
>> ps.ymin = 0;
>> [y,ps] = mapminmax(x1,ps)
y =
0 0.3333 1.0000
ps =
name: 'mapminmax'
xrows: 1
xmax: 4
xmin: 1
xrange: 3
yrows: 1
ymax: 1
ymin: 0
yrange: 1
则此时的映射函数为: f: 1*(x-xmin)/(xmax-xmin)+(0),是否是这样的这回你可自己验证.O(∩_∩)O
如果我对x1 = [1 2 4]采用了某种规范化的方式, 现在我要对x2 = [5 2 3]采用同样的规范化方式[同样的映射],如下可办到:
>> [y1,ps] = mapminmax(x1);
>> y2 = mapminmax('apply',x2,ps)
y2 =
1.6667 -0.3333 0.3333
即对x1采用的规范化映射为: f: 2*(x-1)/(4-1)+(-1),(记录在ps中),对x2也要采取这个映射.
x2 = [5,2,3],用这个映射我们来算一下.
y2(1) = 2(5-1)/(4-1)+(-1) = 5/3 = 1+2/3 = 1.66667
y2(2) = 2(2-1)/(4-1)+(-1) = -1/3 = -0.3333
y2(3) = 2(3-1)/(4-1)+(-1) = 1/3 = 0.3333
X = mapminmax('reverse',Y,PS)的作用就是进行反归一化,讲归一化的数据反归一化再得到原来的数据: >> [y1,ps] = mapminmax(x1);
>> xtt = mapminmax('reverse',y1,ps)
xtt =
1 2 4
此时又得到了原来的x1(xtt = x1);。