How to use polyfit instead of fit for fitting an exponential. For GPU processing.
32 次查看(过去 30 天)
显示 更早的评论
Ok, I've been fighting this for way too long, and I've posed a similar question to this months ago, but I still do not get the values I so desparately need.
How do I use polyfit to get the 'b' value in the output from fit(X,Y,'exp1')?
I've taken the natural log of every combination of value, used polyval in various ways, and still get nothing within 5 orders of magnitude to what I need. I've read many different answers to this same question in the community, so if you post a link to one, I've probably seen it.
This would be moot if I could use fit with a GPU.
6 个评论
Matt J
2019-3-13
You can use gpuArray operations inside the objective function. In doing so, you can potentially gain speed advantages from your GPU.
It is probably a good idea for you to describe the structure of TE and SSS so we can better delve into how you would optimize the computation time. Are you looping over i,j and computing a separate pair [x1,x2] for each one? What are the dimensions of TE and SSS?
Walter Roberson
2019-3-13
If i and j are both scalars, then you only need one squeeze() there instead of 2. You could also use
SS = reshape(SSS(i,j,:), [], 1);
回答(1 个)
Matt J
2019-3-13
编辑:Matt J
2019-3-13
For example,
a=1;
b=2;
x=gpuArray.linspace(0,2,100);
y=a*exp(b*x);
p=polyfit(x,log(y),1);
b_fit=p(1),
produces the desired value,
b_fit =
2
6 个评论
Walter Roberson
2019-3-13
polyfit runs on GPU.
If you are requiring 1.5 hours to do the fit() or polyfit then I would worry you would exceed the memory capacity of your GPU.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 GPU Computing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!