polyfit更快方法在第三维度的大型3 d矩阵?
6视图(30天)
显示旧的评论
你好,我也有同样的问题作为mentiond链接
http://www.mathworks.co.jp/matlabcentral/answers/45680-faster-method-for-polyfit-along-3rd-dimension-of-a-large-3d-matrix
我试图理解答案但是我似乎不能理解其背后的数学,我不知道为什么它给正确的答案。
同时,在我的项目我做指数适合大型3 d矩阵的第三维度两个for循环。
我的代码:
dataCube =兰德(480640500);
x =兰德(500 1);
sizeCube =大小(dataCube);
exCube = 0 (sizeCube);
为2 = 1:sizeCube (1);
为3 = 1:sizeCube (2);
(1:)= dataCube (ii, iii:);
信号= s ';
=合适(x,信号,“exp2”)
y =函数宏指令(x);
exCube (ii, iii:) = y ';
结束
结束
这段代码需要几个小时完成运行。
有经验的一个快速方法适合在3 d dimesnion大型3 d数据矩阵?
任何帮助将不胜感激。
0评论
答案(1)
马特·J
2014年9月12日
编辑:马特·J
2014年9月12日
因为一个多项式线性依赖于未知系数,多项式的解决方案是一个封闭的线性函数的输入数据,因此可以表示为一个矩阵乘法。你不能加快适合exp2多项式一样,因为最小二乘适合exp2既不是线性的,也不是封闭的函数的输入信号。
然而,有技巧可以使用,取决于你dataCube。例如,如果相邻信号dataCube总是很相似,你可以初始化一个信号的设置与解决方案从之前的信号。这减少了所需的迭代的数量的健康。
4评论
马特·J
2014年9月13日
编辑:马特·J
2014年9月13日
这里有一个例子使用FMINSPLEAS exp2配件,
x = linspace (0, 3100);
y = 4 * exp (3 * x) - 5 * exp (2 * x);
funlist = {@ (cd, x) exp (cd (1) * x),…
@ (cd, x) exp (cd光盘(1)+ (2))* x)};
cd0 = [1,4];%初始猜测
选择= optimset (“disp”,“通路”,“TolX”1 e-20“TolFun”1 e-20);
(cd, ab) = fminspleas (cd0 funlist, x, y,[],[],[],选项);
一个= ab (1),
b = ab (2),
c = cd (1),
d = (1) + cd (2),