高斯拟合保持最大振幅相同

7视图(30天)
阿布赛
阿布赛 2021年6月2日
回答: 阿布赛2021年6月3日
我想适应多峰值数据保持最大amplidute相同。我试着平和和峰值拟合但无法achinve好的结果。数据看起来像蓝色的线,我想适合一些类似于黑线。请建议。
问候
Abhi
1评论
马修•诺伊
马修•诺伊 2021年6月2日
你好
你有一个代码(+数据)分享?
tx

登录置评。

接受的答案

阿布赛
阿布赛 2021年6月3日
谢谢你的回复。
它帮我完成代码通过保持信号最大振幅相同,最大振幅的信号的转变。
关闭所有clc;
%光滑曲线/窄峰删除- - - - - -
%建立人工信号
x = linspace (0100256);
y = cos (x / 10) + (x / 50)。^ 2 + randn(大小(x)) / 10;
图;
次要情节(121),情节(x, y,“r”,“线宽”,2)
y ((70 75 80)) = (5.5 - 5 6);
次要情节(122),情节(x, y,“r”,“线宽”,2)
N = 100;%基音平滑点
z = smoothn (y, N);%定期平滑
zr = smoothn (y, N,“稳健”);%的平滑
图;
次要情节(121),情节(x, y,“r”,x, z,“k”,“线宽”,2)
广场、标题(常规的平滑的);
次要情节(122),情节(x, y,“r”,x,锆、“k”,“线宽”,2)
广场、标题(‘强健’平滑);
%的马克斯
[yMax, ymaxIdx] = max (y);
[zrMax, zrMaxIdx] = max (zr);
zr = zr。* (yMax / zrMax);
图;
次要情节(121),情节(x, y,“r”,x, z,“k”,“线宽”,2)
广场、标题(常规的平滑的);
次要情节(122),情节(x, y,“r”,x,锆、“k”,“线宽”,2)
广场、标题(健壮的平滑,最大振幅相同的);
%匹配信号转移到权利中心
转变= ymaxIdx-zrMaxIdx;
zrshift = zr(1:晚班);
zrshift = circshift(锆、转移);
图;情节(x, y,“r”,x, zrshift“k”,“线宽”,2)
广场、标题(‘强健’平滑转移信号);

更多的答案(2)

杰夫•米勒
杰夫•米勒 2021年6月3日
一种选择是合适的平滑曲线,然后(平滑,预测)高度乘以常数的需要使光滑曲线比锯齿状的数据点。

马修•诺伊
马修•诺伊 2021年6月3日
你好
健壮的平滑可以帮助你
请参见下面的代码
clc
clearvars
% - - -例# 1:光滑曲线/窄峰删除- - - - - -
x = linspace (0100256);
y = cos (x / 10) + (x / 50)。^ 2 + randn(大小(x)) / 10;
y ((70 75 80)) = (5.5 - 5 6);
N = 100;
z = smoothn (y, N);%定期平滑
zr = smoothn (y, N,“稳健”);%的平滑
次要情节(121),情节(x, y,“r”,x, z,“k”,“线宽”,2)
广场、标题(常规的平滑的)
次要情节(122),情节(x, y,“r”,x,锆、“k”,“线宽”,2)
广场、标题(‘强健’平滑)
函数[z,年代,exitflag] = smoothn(变长度输入宗量)
% SMOOTHN健壮为一维样条平滑一天数据。
% SMOOTHN提供了一个快速、自动化和健壮的离散样条
任意维度的%平滑数据。
%
% Z = SMOOTHN (Y)自动消除uniformly-sampled数组Y Y
%可以是任意一天吵阵列(时间序列、图像、三维数据,…)。非
%有限数据(南或Inf)被视为缺失值。
%
% Z = SMOOTHN (Y, S)抚平数组Y使用平滑参数S。
% S必须真正积极的标量。大S,平滑
%将输出。如果省略平滑参数S(见以前的
%选项)或空(例如S =[]),它是自动确定
%最小化广义交叉验证(GCV)得分。
%
% Z = SMOOTHN (Y, W)或Z = SMOOTHN (Y, W S)使用加权消除Y
%数组W积极的价值观,必须具有相同的大小y
%,零重量对应于一个缺失值。
%
%如果你想顺利一个向量场或多组分数据,必须
%细胞数组。例如,如果您需要平滑的三维矢量流
% (Vx, v,之后,用Y = {Vx, v, Vz}。Z也是一个单元阵列的输出
%包含平滑组件。请参阅下面的示例5到8。
%
%的平滑
% - - - - - - - - - - - - - - - - -
% Z = SMOOTHN(…,“健壮”)执行一个健壮的平滑,最小化
%外围数据的影响。
%
% [Z S] = SMOOTHN(…)也返回计算值
%平滑参数S,以便您可以调整平滑
%随后如果需要。
%
%迭代过程中使用加权的存在和/或失踪
%值。Z = SMOOTHN (…, OPTION_NAME OPTION_VALUE)抚平的
%终止OPTION_NAME和OPTION_VALUE指定参数。他们
%可以包含以下标准:
% - - - - - - - - - - - - - - - - - -
% TolZ:终止Z(默认= 1 e - 3)上的宽容
% TolZ必须在0 1 (
%麦克斯特:最大允许的迭代次数(默认= 100)
%初始:迭代过程的初始值(默认=
%原始数据)
%重量:健壮的平滑的权重函数:
% bisquare(默认),“talworth”或“柯西”
% - - - - - - - - - - - - - - - - - -
%的语法:[Z,…]= SMOOTHN(…,”麦克斯特“,500年,“TolZ”, 1的军医,最初,Z0);
%
% (Z,年代,EXITFLAG) = SMOOTHN(…)返回一个布尔值EXITFLAG
%描述SMOOTHN的退出条件:
% 1 SMOOTHN聚集。
% 0最大迭代数。
%
%的参考
% - - - - - - - - - - - -
加西亚% D,健壮的网格数据的平滑和更高的维度
%用缺失值。计算统计与数据分析,2010年。
% <
% href = " matlab: web (“http://www.biomecardio.com/pageshtm/publi/csda10.pdf”)" > PDF下载< / >
%
%的速度向量场,也指的是:
%
加西亚% D,快速自动后处理PIV的一体化方法
%的数据。实验流体,2011。
% <
% href = " matlab: web (“http://www.biomecardio.com/pageshtm/publi/expfluids1010.pdf”)" > PDF下载< / >
%
%的例子:
% - - - - - - - - - -
% % - - -例# 1:光滑曲线- - - - - -
% x = linspace (0100、2 ^ 8);
% y = cos (x / 10) + (x / 50)。^ 2 + randn(大小(x)) / 10;
% y ((70 75 80)) = (5.5 - 5 6);
% z = smoothn (y);%定期平滑
% zr = smoothn (y,“健壮”);%的平滑
%次要情节(121),情节(x, y,“r”。, x, z,“k”,“线宽”,2)
%轴广场,标题(“常规平滑”)
%次要情节(122),情节(x, y,“r”。, x,锆、“k”,“线宽”,2)
%轴广场,标题(“健壮的平滑”)
%
% % - - -例2:光滑的表面- - - - - -
% xp = 0: .02:1;
% (x, y) = meshgrid (xp);
% f = exp (x + y) +罪((x - 2 * y) * 3);
% fn = f + randn(大小(f)) * 0.5;
% fs = smoothn (fn);
%次要情节(121),冲浪(xp, xp, fn) zlim([0 8]),轴广场
%次要情节(122),冲浪(xp, xp, fs), zlim([0 8]),轴广场
%
% % - - - - - - # 3:例子与缺失的数据——平滑图像
% n = 256;
% y0 =山峰(n);
% y = y0 + randn(大小(y0)) * 2;
% I = randperm (n ^ 2);
% y(我(1:n ^ 2 * 0.5)) =南;%失去1/2的数据
% y(40:90,140:190) =南;%创造一个洞
% z = smoothn (y);%平滑数据
%次要情节(2,2,1:2),显示亮度图像(y),轴相等
%标题(“嘈杂的腐败数据”)
%次要情节(223),显示亮度图像(z),轴相等
%标题(“恢复数据…”)
%次要情节(224),显示亮度图像(y0),轴相等
%(“标题…与实际数据”)
%
% % - - -例# 4:光滑体积数据- - - - - -
% [x, y, z] = meshgrid (2: .2:2);
% xslice = (-0.8, 1);yslice = 2;zslice = (2,0);
% vn = x。* exp (- x ^ 2 y。^ 2 z。^ 2) + randn(大小(x)) * 0.06;
%次要情节(121)、切(x, y, z, vn xslice, yslice, zslice,“立方”)
%标题(“数据”)
% v = smoothn (vn);
%次要情节(122)、切(x, y, z, v, xslice yslice, zslice,“立方”)
%标题(“平滑数据”)
%
% % - - -例# 5:心形——光滑
% t = linspace(0, 2 *π,1000);
% x = 2 * cos (t) * (1-cos (t)) + randn(大小(t)) * 0.1;
% y = 2 *罪(t) * (1-cos (t)) + randn(大小(t)) * 0.1;
% z = smoothn ({x, y});
%情节(x, y,“r”。, z {1}, {2} z,“k”,“线宽”,2)
%轴平等紧
%
% % - - -例# 6:平滑——3 d参数曲线
% t = linspace(0, 6 *π,1000);
% x =罪(t) + 0.1 * randn(大小(t));
% y = cost + 0.1 * randn(大小(t));
% z = t + 0.1 * randn(大小(t));
% u = smoothn ({x, y, z});
% plot3 (x, y, z,“r”。,你{1},{2},{3},“k”,“线宽”,2)
%轴紧广场
%
% % - - -例# 7:光滑的一个二维向量场- - - - - -
% (x, y) = meshgrid (linspace (0, 1, 24));
% Vx = cos(2 *π* x +π/ 2)。* cos(2 *π* y);
% v =罪(2 *π* x +π/ 2)。*罪(2 *π* y);
% Vx = Vx + sqrt (0.05) * randn (24 24);%添加高斯噪声
% v = v + sqrt (0.05) * randn (24 24);%添加高斯噪声
% I = randperm(元素个数(Vx));
% Vx(我(1:30))=(-0.5兰特(30日1))* 5;%添加异常值
% v(我(1:30))=(-0.5兰特(30日1))* 5;%添加异常值
% Vx(我(31:60))=南;%缺失值
% v(我(31:60))=南;%缺失值
% Vs = smoothn ({Vx, v},“健壮”);%自动平滑
%次要情节(121)、箭袋(x, y, Vx, v, 2.5),轴广场
%标题(“嘈杂的速度场”)
%次要情节(122)、箭袋(x, y, Vs {1}, Vs{2}),轴广场
%标题(“平滑速度场”)
%
% % - - -例# 8:光滑的一个三维向量场- - - - - -
%负载风%原始三维流
% %——创建的数据
% %高斯噪声
联合国= % u + randn(大小(u)) * 8;
% vn = v + randn(大小(v)) * 8;
% wn = w + randn(大小(w)) * 8;
% %添加一些异常值
% I = randperm(元素个数(u) <元素个数(u) * 0.025;
%联合国(I) =(兰特(1,nnz(我))-0.5)* 200;
% vn (I) =(兰特(1,nnz(我))-0.5)* 200;
% wn (I) =(兰特(1,nnz(我))-0.5)* 200;
% %——可视化嘈杂的流(见CONEPLOT文档)
%图、标题(“嘈杂的3 d矢量流”)
% xmin = min (x (:));xmax = max (x (:));
% ymin = min (y (:));ymax = max (y (:));
% zmin = min (z (:));
% daspect ([2 2 1])
% xrange = linspace (xmin xmax 8);
% yrange = linspace (ymin ymax 8);
% zrange = 3:4:15;
% (cx cy cz) = meshgrid (xrange、yrange zrange);
% k = 0.1;
% hcones = coneplot (x, y, z,联合国* k, vn * k, wn * k,残雪,cy, cz, 0);
%设置(hcones‘FaceColor’,‘红’,‘EdgeColor’,‘没有’)
%抓住
% wind_speed =√联合国。^ 2 + vn。^ 2 + wn。^ 2);
% hsurfaces =片(x, y, z, wind_speed [xmin xmax], ymax, zmin);
%设置(hsurfaces FaceColor,插值函数,“EdgeColor”,“没有一个”)
%推迟
%轴紧;视图(30、40);轴了
% camproj视角;camzoom (1.5)
% camlight正确;照明冯氏
%设置(hsurfaces、“AmbientStrength”。6)
%设置(hcones、“DiffuseStrength”。8)
% %——光滑的流
% Vs = smoothn({联合国、vn wn},“健壮”);
% %,显示结果
%图、标题(“三维流平滑通过SMOOTHN”)
% daspect ([2 2 1])
% hcones = coneplot (x, y, z, Vs {1} * k, Vs {2} * k, Vs {3} * k,残雪,cy, cz, 0);
%设置(hcones‘FaceColor’,‘红’,‘EdgeColor’,‘没有’)
%抓住
% wind_speed =√Vs {1}。^ 2 + Vs {2}。Vs {3}。^ ^ 2 + 2);
% hsurfaces =片(x, y, z, wind_speed [xmin xmax], ymax, zmin);
%设置(hsurfaces FaceColor,插值函数,“EdgeColor”,“没有一个”)
%推迟
%轴紧;视图(30、40);轴了
% camproj视角;camzoom (1.5)
% camlight正确;照明冯氏
%设置(hsurfaces、“AmbientStrength”。6)
%设置(hcones、“DiffuseStrength”。8)
%
%参见DCTSMOOTH、SMOOTH1Q DCTN IDCTN。
%
%——达米安•加西亚——2009/03,修订后的2013/06
%网站:< a
% href = " matlab: web (“http://www.biomecardio.com”)“www.BiomeCardio.com > < / >
%检查输入参数
输入参数个数错误(nargchk(12日));
% % &准备测试变量
% - - - - - -
k = 0;
k <输入参数个数& & ~ ischar(变长度输入宗量{k + 1}), k = k + 1;结束
% - - - - - -
% y =数组是平滑的
y =变长度输入宗量{1};
如果~ iscell (y), y = {y};结束
胶水的大小= (y) {1});
纽约=元素个数(y);%的y分量
我= 1:纽约
如果~ isequal(胶水、尺寸(y{我}))
错误(Matlab: smoothn: SizeMismatch,
数组的数据必须具有相同的大小。)
结束
双(y y{我}={我});
结束
一个=刺激(胶水);%的元素数量
如果一个< 2,z = y;s = [];exitflag = true;返回,结束
% - - - - - -
%平滑参数和权值
W = 1(胶水);
s = [];
如果k = = 2
如果isempty(变长度输入宗量{2})| | isscalar变长度输入宗量({2})% smoothn (y, s)
s =变长度输入宗量{2};%平滑参数
其他的% smoothn (y, W)
W =变长度输入宗量{2};%权重数组
结束
elseifk = = 3% smoothn (y, W s)
W =变长度输入宗量{2};%权重数组
s =变长度输入宗量{3};%平滑参数
结束
如果~ isequal(大小(W),胶水)
错误(MATLAB: smoothn: SizeMismatch,
对数据的数组和权重(Y)和W)必须具有相同的大小。)
elseif~ isempty () & & (~ isscalar (s) | | < 0)
错误(MATLAB: smoothn: IncorrectSmoothingParameter,
平滑参数年代必须是一个标量> = 0”)
结束
% - - - - - -
%”最大迭代次数”标准
我找= (strcmpi(变长度输入宗量,“麦克斯特”),1);
如果isempty(我)
麦克斯特= 100;麦克斯特%默认值
其他的
试一试
麦克斯特=变长度输入宗量{I + 1};
% #好吧
错误(MATLAB: smoothn: IncorrectMaxIter,
“麦克斯特必须是一个整数> = 1”)
结束
如果~ isnumeric(麦克斯特)| | ~ isscalar(麦克斯特)| |
麦克斯特< 1 | |麦克斯特~ =圆(麦克斯特)
错误(MATLAB: smoothn: IncorrectMaxIter,
“麦克斯特必须是一个整数> = 1”)
结束
结束
% - - - - - -
%平滑输出“容忍”标准
我找= (strcmpi(变长度输入宗量,“TolZ”),1);
如果isempty(我)
TolZ = 1 e - 3;%为TolZ默认值
其他的
试一试
TolZ =变长度输入宗量{I + 1};
% #好吧
错误(MATLAB: smoothn: IncorrectTolZ,
' TolZ必须]0 1 [')
结束
如果~ isnumeric (TolZ) | | ~ isscalar (TolZ) | | TolZ < = 0 | | TolZ > = 1
错误(MATLAB: smoothn: IncorrectTolZ,
' TolZ必须]0 1 [')
结束
结束
% - - - - - -
%“最初的猜测”标准
我找= (strcmpi(变长度输入宗量,“初始”),1);
如果isempty(我)
isinitial = false;%为TolZ默认值
其他的
isinitial = true;
试一试
z0 =变长度输入宗量{I + 1};
% #好吧
错误(MATLAB: smoothn: IncorrectInitialGuess,
Z0必须是一个有效的初始猜测Z”)
结束
如果~ isnumeric (z0) | | ~ isequal(大小(z0),胶水)
错误(MATLAB: smoothn: IncorrectTolZ,
Z0必须是一个有效的初始猜测Z”)
结束
结束
% - - - - - -
%”加权函数”标准(健壮的平滑)
我找= (strcmpi(变长度输入宗量,“重量”),1);
如果isempty(我)
weightstr =“bisquare”;%默认的权重函数
其他的
试一试
weightstr =低(变长度输入宗量{I + 1});
错误(MATLAB: smoothn: IncorrectWeights,
必须选择一个有效的权重函数的)
结束
如果~ ischar (weightstr)
错误(MATLAB: smoothn: IncorrectWeights,
必须选择一个有效的权重函数的)
结束
结束
% - - - - - -
%”秩序”标准(默认情况下m = 2)
%注意:m = 0 =当然不推荐!
我找= (strcmpi(变长度输入宗量,“秩序”),1);
如果isempty(我)
m = 2;%的顺序
其他的
试一试
m =变长度输入宗量{I + 1};
% #好吧
错误(MATLAB: smoothn: IncorrectOrder,
“必须选择一个有效的秩序”)
结束
如果~ ismember (m, 0:2);
错误(MATLAB: smoothn: IncorrectOrder,
订单必须是0、1或2。)
结束
结束
% - - - - - -
%的重量。零权重分配不有限的值(正或南),
%(正/ NaN值=缺失的数据)。
IsFinite = IsFinite (y) {1});
我= 2:纽约,IsFinite = IsFinite & IsFinite (y{我});结束
nof = nnz (IsFinite);%的数量有限的元素
W = W * IsFinite;
如果任何(W < 0)
错误(MATLAB: smoothn: NegativeWeights,
的重量都必须> = 0)
其他的
W = W / max (W (:));
结束
% - - - - - -
%加权或缺失的数据?
isweighted =任何(W (:) < 1);
% - - - - - -
%的平滑?
任何(strcmpi isrobust =(变长度输入宗量,“稳健”));
% - - - - - -
%自动平滑?
isauto = isempty (s);
% %创建λ张量
% - - - - - -
%的λ包含eingenvalues差别矩阵中使用这个
%惩罚最小二乘过程(有关详细信息,请参阅CSDA纸)
d = ndims (y);
λ= 0(胶水);
i = 1: d
siz0 = 1 (1 d);
siz0 (i) =胶水(我);
λλ= bsxfun (@plus,
因为(π*(重塑(1:胶水(我),siz0) 1) /胶水(我)));
结束
λ= 2 * (dλ);
如果~ isauto,γ= 1. / (1 + s *λ。^ m);结束
% %平滑参数的上界和下界
%的平均杠杆(h)是由定义在[0,1]。弱平滑发生
%如果h是接近1,over-smoothing附近出现在h是0。上
%和下界给出了h,以避免或over-smoothing之下。看到
% h相关的方程平滑参数的m = 2(方程# 12
%的引用CSDA纸)。
N =(胶水的~ = 1)总和;% y阵列的张量排名
机构= 1 e-6;hMax = 0.99;
如果m = = 0%不推荐。仅供数学的目的。
sMinBnd = 1 / hMax ^ (1 / N) 1;
sMaxBnd = 1 /机构^ (1 / N) 1;
elseifm = = 1
sMinBnd = (1 / hMax ^ (2 / N) 1) / 4;
sMaxBnd =(1 /机构^ (2 / N) 1) / 4;
elseifm = = 2
sMinBnd = ((1 +√(1 + 8 * hMax ^ (2 / N))) / 4 / hMax ^ (2 / N)) ^ 2 - 1) / 16;
sMaxBnd =((1 +√(1 + 8 *机构^ (2 / N))) / 4 /机构^ (2 / N)) ^ 2 - 1) / 16;
结束
% %迭代之前初始化
% - - - - - -
Wtot = W;
% - - - z的初始条件
如果isweighted
% - - -加权/缺失的数据
%初始猜测是确保提供更快的收敛。为那
%的目的,最近邻插值粗
%平滑。
% - - - - - -
如果isinitial%初始猜测(z0)已给出
z = z0;
其他的
z = InitialGuess (y, IsFinite);
结束
其他的
z =细胞(大小(y));
我= 1:纽约,z{我}= 0(胶水);结束
结束
% - - - - - -
z0 = z;
我= 1:纽约
y {} (~ IsFinite) = 0;%失踪y数据的任意值
结束
% - - - - - -
托尔= 1;
RobustIterativeProcess = true;
RobustStep = 1;
nit = 0;
纽约DCTy =细胞(1);
vec = @ (x) x (:);
% - - -错误p。平滑参数s = 10 ^ p
errp = 0.1;
选择= optimset (“TolX”,errp);
% - - -松弛因子射频:加速收敛
射频= 1 + 0.75 * isweighted;
% %主要的迭代过程
% - - - - - -
RobustIterativeProcess
% - - - - - -“量”的权重(见函数GCVscore)
aow =总和(Wtot(:)) /诺;% 0 < aow < = 1
% - - - - - -
托尔> TolZ & & nit <麦克斯特
nit = nit + 1;
我= 1:纽约
DCTy{我}= dctn (Wtot。* (y - z{我}{我})+ z{我});
结束
如果isauto & & ~ rem (log2 (nit), 1)
% - - - - - -
%的广义交叉验证(GCV)方法使用。
%我们寻求GCV的平滑参数的最小化
%的分数即S = Argmin (GCVscore)。
%因为这个过程很耗时间,它执行
%时间(当步数- nit -是2的幂)
% - - - - - -
fminbnd (@gcv log10 (sMinBnd) log10 (sMaxBnd),选择);
结束
我= 1:纽约
z{我}= RF * idctn(伽马。* DCTy{我})+ (1-RF) * z {};
结束
%如果没有加权/缺失数据= > tol = 0(没有迭代)
vec ([z0 tol = isweighted *规范({}):- (z{:}))) /规范(vec ({}): [z));
z0 = z;%初始化
结束
exitflag = nit <麦克斯特;
如果isrobust%,健壮的平滑:迭代重新调整的过程
% - - - - - -平均杠杆
如果m = = 0%不推荐
h = 1 / (1 + s);
elseifm = = 1
h = 1 /√(1 + 4 * s);
elseifm = = 2
h = sqrt (1 + 16 * s);
h =√1 + h) /√(2) / h;
其他的
错误(“m必须是0、1或2。)
结束
h = h ^ N;
% - - - - - -考虑到强劲的权重
Wtot = w * RobustWeights (y, z, IsFinite, h, weightstr);
% - - -初始化另一个迭代加权过程
isweighted = true;托尔= 1;nit = 0;
% - - - - - -
RobustStep = RobustStep + 1;
RobustIterativeProcess = RobustStep < 4;% 3足够健壮的步骤。
其他的
RobustIterativeProcess = false;%停止整个过程
结束
结束
% %警告消息
% - - - - - -
如果isauto
如果abs (log10 (s) log10 (sMinBnd)) < errp
警告(MATLAB: smoothn: SLowerBound,
(' S = 'num2str(年代,“% .3e”)”:下界的年代,
”。把年代如果需要作为输入变量。])
elseifabs (log10 (s) log10 (sMaxBnd)) < errp
警告(MATLAB: smoothn: SUpperBound,
(' S = 'num2str(年代,“% .3e”)”:上界的年代,
”。把年代如果需要作为输入变量。])
结束
结束
如果nargout < 3 & & ~ exitflag
警告(MATLAB: smoothn:麦克斯特,
(的最大迭代次数(int2str(麦克斯特)“)”,
“被超过。麦克斯特选择增加或减少TolZ价值。”])
结束
如果元素个数(z) = = 1, z z = {};结束
% % GCV的分数
% - - - - - -
函数GCVscore = gcv (p)
%搜索平滑参数s,最小化了GCV得分
% - - - - - -
s = 10 ^ p;
γ= 1. / (1 + s *λ。^ m);
% - - - RSS =剩余平方和
RSS = 0;
如果aow > 0.9% aow = 1意味着所有的数据也同样加权
%非常快得多:不需要任何逆DCT
kk = 1:纽约
RSS = RSS +规范(DCTy {kk}(:)。*(γ(:)1))^ 2;
结束
其他的
%考虑权重计算RSS:
kk = 1:纽约
yhat = idctn(伽马。* DCTy {kk});
RSS = RSS +规范(√Wtot (IsFinite)。*
(y {kk} (IsFinite) -yhat (IsFinite))) ^ 2;
结束
结束
% - - - - - -
韦=总和(γ(:));
GCVscore = RSS / nof / (1-TrH /一)^ 2;
结束
结束
函数W = RobustWeights (y, z, h, wstr)
%寻求一个健壮的平滑的重量……
ABS = @ (x)√和ABS (x) ^ 2, 2));%“abs”的复数
r = cellfun (@minus, y, z,“UniformOutput”,0);%残差
r = cellfun (@ (x) x (:), r,“UniformOutput”,0);
国际扶轮= cell2mat (cellfun (@ (x) x (I), r,“UniformOutput”,0));
毫米=值(rI);%的边际值
广告= ABS (bsxfun (@minus rI, mm));%绝对偏差
疯了=值(广告);%的平均绝对偏差
%——Studentized残差
u = ABS (cell2mat (r)) /(1.4826 *疯了)/√(1小时);
u =重塑(u,大小(I));
如果比较字符串(wstr“柯西”)
c = 2.385;W = 1. / (1 + (u / c) ^ 2);%柯西权重
elseif比较字符串(wstr“talworth”)
c = 2.795;W = u < c;% Talworth权重
elseif比较字符串(wstr“bisquare”)
c = 4.685;W = (1 - (u / c) ^ 2) ^ 2。* ((u / c) < 1);% bisquare权重
其他的
错误(MATLAB: smoothn: IncorrectWeights,
必须选择一个有效的权重函数的)
结束
W (isnan (W)) = 0;
%注意:
% - - - - -
%的RobustWeights子功能看起来很复杂因为我们处理细胞
%数组。为了更好的清晰,这是如何看起来像没有
%的细胞。更可读的,不是吗?
%
%函数W = RobustWeights (y, z, h)
% %权重健壮的平滑。
% r = - z;%残差
%疯狂=值(abs (r (I)中位数(r(我))));%的平均绝对偏差
% u = abs (r /(1.4826 *疯了)/√(1小时);% studentized残差
% c = 4.685;W = (1 - (u / c) ^ 2) ^ 2。* ((u / c) < 1);% bisquare权重
% W (isnan (W)) = 0;
%结束
结束
% %初始猜测与加权/缺失的数据
函数z = InitialGuess (y,我)
纽约=元素个数(y);
% - - -最近邻插值(的缺失值)
如果任何(~我(:))
z =细胞(大小(y));
如果许可证(“测试”,“image_toolbox”)
我= 1:纽约
[z{我},L] = bwdist(我);
y z{我}= {};
z{我}(~我)= y{我}(L(我)~);
结束
其他的
%如果BWDIST不存在,都换成NaN值
%相同的标量。最初的猜测不是最优和一个警告
%的消息出现。
z = y;
我= 1:纽约
z{我}(~我)=意味着(y{我}(i));
结束
警告(MATLAB: smoothn: InitialGuess,
(“BWDIST(图像处理工具箱)并不存在。”,
的初始猜测可能不是最优的;额外的,
迭代可以因此被要求确保完成的,
的收敛性。必要时增加“麦克斯特”标准。])
结束
其他的
z = y;
结束
%——粗快速平滑使用DCT系数的十分之一
siz =大小(z {1});
z = cellfun (@ (x) dctn (x) z,“UniformOutput”,0);
k = 1: ndims (z {1})
我= 1:纽约
z{我}(装天花板(siz (k) / 10) + 1:,:) = 0;
z{我}=重塑(z{我},circshift (siz [0 1 k]));
z{我}= shiftdim (z {}, 1);
结束
结束
z = cellfun (@ (x) idctn (x) z,“UniformOutput”,0);
结束
% % DCTN
函数y = dctn (y)
% DCTN天离散余弦变换。
% Y = DCTN (X)返回数组X Y的离散余弦变换
% X和大小一样包含了离散余弦变换
%系数。这种转换可以使用IDCTN倒。
%
%的参考
% - - - - - - - - - - - -
% Narasimha m . et al,计算的离散余弦
%变换,IEEE反式通讯,26日,6日,1978年,页934 - 936。
%
%的例子
% - - - - - - -
% RGB = imread (“autumn.tif”);
% I = rgb2gray (RGB);
% J = dctn(我);
% imshow(日志(abs (J)), []), colormap(飞机),colorbar
%
%以下命令设置值小于10级的DCT矩阵
%为零,然后使用逆重构图像DCT。
%
% J (abs (J) < 10) = 0;
% K = idctn (J);
%,imshow(我)
%,imshow (K, 255年[0])
%
%——达米安•加西亚——2008/06,修订后的2011/11
%——www.BiomeCardio.com——
y =双(y);
胶水的=大小(y);
y =紧缩(y);
dimy = ndims (y);
%需要一些修改如果Y是一个向量
如果isvector (y)
dimy = 1;
如果大小(y, 1) = = 1, y = y。';结束
结束
%权重向量
w =细胞(1、dimy);
昏暗的= 1:dimy
n = (dimy = = 1) *元素个数(y) + (dimy > 1) *胶水(暗);
w{暗}= exp(1我* (0:n - 1) *π/ 2 / n);
结束
% - - - - - - - - - - - - DCT算法
如果~伊斯雷尔(y)
y =复杂(dctn(真正的(y)), dctn(图像放大(y)));
其他的
昏暗的= 1:dimy
siz =大小(y);
n = siz (1);
y = y ([1:2: n (n / 2): 2 *地板2:2),:);
y =重塑(y, n, []);
y = y * sqrt (2 * n);
y =传输线(y, [], 1);
y, y = bsxfun (@times w{暗});
y =真正的(y);
(1:)= y:) /√(2);
y =重塑(y, siz);
y, y = shiftdim (1);
结束
结束
y =重塑(y,胶水);
结束
% % IDCTN
函数y = idctn (y)
% IDCTN天逆离散余弦变换。
% X = IDCTN (Y)反转一天DCT变换,返回原来的
%如果Y是获得使用数组Y = DCTN (X)。
%
%的参考
% - - - - - - - - - - - -
% Narasimha m . et al,计算的离散余弦
%变换,IEEE反式通讯,26日,6日,1978年,页934 - 936。
%
%的例子
% - - - - - - -
% RGB = imread (“autumn.tif”);
% I = rgb2gray (RGB);
% J = dctn(我);
% imshow(日志(abs (J)), []), colormap(飞机),colorbar
%
%以下命令设置值小于10级的DCT矩阵
%为零,然后使用逆重构图像DCT。
%
% J (abs (J) < 10) = 0;
% K = idctn (J);
%,imshow(我)
%,imshow (K, 255年[0])
%
%也看到DCTN IDSTN、IDCT IDCT2 IDCT3。
%
%——达米安•加西亚——2009/04,修订后的2011/11
%——www.BiomeCardio.com——
y =双(y);
胶水的=大小(y);
y =紧缩(y);
dimy = ndims (y);
%需要一些修改如果Y是一个向量
如果isvector (y)
dimy = 1;
如果大小(y, 1) = = 1
y = y。';
结束
结束
%重向量
w =细胞(1、dimy);
昏暗的= 1:dimy
n = (dimy = = 1) *元素个数(y) + (dimy > 1) *胶水(暗);
w{暗}= exp(1我* (0:n - 1) *π/ 2 / n);
结束
% - - - - - - - - - IDCT算法
如果~伊斯雷尔(y)
y =复杂(idctn(真正的(y)), idctn(图像放大(y)));
其他的
昏暗的= 1:dimy
siz =大小(y);
n = siz (1);
y =重塑(y, n, []);
y, y = bsxfun (@times w{暗});
(1:)= y:) /√(2);
y =传输线(y, [], 1);
y =实际(y * sqrt (2 * n));
我= (1:n) * 0.5 + 0.5;
我(2:2:结束)= n (1:2: end-1) + 1;
y = y(我:);
y =重塑(y, siz);
y, y = shiftdim (1);
结束
结束
y =重塑(y,胶水);
结束

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!