找回密码
 注册
查看: 7075|回复: 3

matlab的极差归一化变换

[复制链接]
发表于 2011-8-22 19:46:56 | 显示全部楼层 |阅读模式
function [R,xmin,xrange] = rscore(x,dim)
%极差归一化变换
%   R = rscore(X) 对X进行极差归一化变换,这里X可以是一个向量、矩阵或高维数组。
%   若X是一个向量,返回变换后结果向量R = (X–min(X))./range(X);若X是一个矩阵,
%   则用X的每一列的最小值和极差对该列进行极差归一化变换,返回变换后矩阵R;若X是
%   一个高维数组,则沿X的首个非单一维方向计算最小值和极差,然后对X进行极差归一化
%   变换,返回变换后高维数组R.  例如X是一个1×1×1×4的4维数组,由于X的前三维均
%   为单一维,于是计算X的第4维方向上的最小值和极差,对X进行极差归一化变换,返回
%   的R也是一个1×1×1×4的4维数组。
%
%   [R,xmin,xrange] = rscore(X) 还返回X的最小值xmin = min(X)和极差xrange = range(X).
%
%   [...] = rscore(X,dim) 用dim参数指定沿X的哪个维进行极差归一化变换,例如
%   dim = 1,表示对X的各列进行极差归一化变换;dim = 2,表示对X的各行进行极差归一化变换。
%
%   请参考zscore, min 和 range 函数的用法.

%   Copyright 2009 - 2010 xiezhh.
%   $Revision: 1.0.0.0 $  $Date: 2009/12/2 15:58:36 $

if isequal(x,[]), z = []; return; end

if nargin < 2
    % Figure out which dimension to work along.
    dim = find(size(x) ~= 1, 1);
    if isempty(dim), dim = 1; end
end

% Compute X's min and range, and standardize it
xmin = min(x,[],dim);
xrange = range(x,dim);
xrange0 = xrange;
xrange0(xrange0==0) = 1;
R = bsxfun(@minus,x, xmin);
R = bsxfun(@rdivide, R, xrange0);
回复

使用道具 举报

发表于 2011-8-22 20:36:25 | 显示全部楼层
很好的东西,好好学习一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-8-28 12:02:39 | 显示全部楼层
多顶顶哦,看帖要顶哦
回复 支持 反对

使用道具 举报

发表于 2012-1-10 11:33:56 | 显示全部楼层
多顶顶哦,看帖要顶哦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-12-4 01:41 , Processed in 0.022781 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表