MATLAB 中 正则化函数是什么?

MATLAB 中 正则化函数是什么?,第1张

不知道你问的是正则化项,还是正则化方法。

(1)如果是正则化项,一般用范数表示:

norm(X)默认等同于 norm(X,2),返回 X的2-范数;

norm(X,1) 返回 X的1-范数;

norm(X,Inf) 返回 X的无穷范数;

norm(X,'fro') 返回 X的F范数.

(2)如果是某一具体的正则化方法,估计需要自己编程,仿佛曾见过老外编的一个正则化工具箱,里面包括常见的正则化方法,例如:Tikhnove正则化。

MatLab归一化(正则化)函数

mapminmax

语法

[Y,PS] = mapminmax(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')

remconst('pcheck',FP)

描述

mapminmax将矩阵中每一行规范化到[YMIN,YMAX]范围内。

mapminmax(X,YMIN,YMAX)中参数YMIN,YMAX是可选的。 Matlab中文论坛

X为N*Q的矩阵或者每一元素为1*TS细胞元组的N*Q的矩阵。

YMIN Y中每个行的最小值(默认为-1)

YMAX Y中每个行的最大值(默认为1) book.iLoveMatlab.cn

返回值:

Y M*Q的矩阵(M=Q)

PS 处理过程的设置,实现对数据的一致处理

mapminmax(X,FP) 参数为一个结构:FP.ymin, FP.ymax

mapminmax('apply',X,PS) 对X根据PS中的配置做同样的规范化,返回Y

mapminmax('reverse',Y,PS) 根据规范化后的Y及PS中的配置反归一化,返回X

mapminmax('dx',X,Y,PS) returns the M x N x Q derivative of Y with respect to X.

mapminmax('dx',X,[],PS) returns the derivative, less efficiently.

mapminmax('name') 返回处理方法的名字

mapminmax('pdefaults') 返回默认的处理参数的结构

mapminmax('pdesc')返回处理参数的描述

mapminmax('pcheck',FP) 如果任意一个参数非法返回错误信息

举例

下面是如何规范化一个矩阵的过程,这个规范化将每一行的最小值与最大值映射到区间[-1,1]

x1 = [1 2 41 1 13 2 20 0 0]

[y1,PS] = mapminmax(x1)

下一步,对新的值应用同样的处理方法 book.iLoveMatlab.cn

x2 = [5 2 31 1 16 7 30 0 0]

y2 = mapminmax('apply',x2,PS)

将y1反归一化回x1

x1_again = mapminmax('reverse',y1,PS)

算法

mapminmax假设x的值为实数,并且每一行的元素值不相等

y = (ymax - ymin)*(x - xmin)/(xmax - xmin) + ymin

下面是我自己编写的一个二分法的程序 我没有给全 具体你可以到 http://www.matlabsky.cn/viewthread.php?tid=518&extra=page%3D1&frombbs=1 查看全部代码 function [c,err,yc]=bisect(f,a,b,delta) %二分法求根Matlab源代码 %f为所要求解的函数,一般为匿名函数、inline函数或者M文件 %a,b为求根区间 %delta为允许的误差精度 %c为近似解 %err为误差估计 %yc为函数f在c点的函数值 %EXAMPLE %>>f=inline('x^4-x-1')bisect(f,1,2) %by dynamic %all rights preserved by www.matlabsky.cn %2008.7.3 if nargin<4 delta=1e-6 end ya=feval(f,a) yb=feval(f,b) if yb==0 c=b return elseif ya==0 c=a return end if ya*yb>0 disp(['区间[' num2str(a) num2str(b) ']没有根,请重新选择求根区间']) return end nn=1+round((log(b-a)-log(delta))/log(2)) for kk=1:nn c=(a+b)/2 yc=feval(f,c) if yc==0 a=c b=c break elseif yb*yc>0 b=c yb=yc else a=c ya=yc end if (b-a)<delta break


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12145112.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存