Increasing lsqcurvefit/nlinfit speed
4 次查看(过去 30 天)
显示 更早的评论
Hi,
I'm looking to increase the speed with which lsqcurvefit is running in my code. The "fitting function" attempts to find a solution by using a lookup table, who's axes are some of my free paramters. I suspect speed is taking a hit because my table is almost 3GB. Right now, I'm sending the table to the anonymous function instead of loading it within the function each iteration (see below - "crossSecSimC2H4" is the database).
[estimCustomCSec(i,:),resnorm,residCsec,~,~,~,Jac] = lsqcurvefit(@(freeParamsC,waveExperiment)fitCustomCrossSecData...
(freeParamsC,waveExperiment,numDens(i),L,absLaser3(:,i,1),bCoeffC2H4,bCoeffCH4,xC2H4range,xCH4range,crossSecSimC2H4...
,crossSecSimCH4,waveExperiment,waveDatabase),freeParamsC,waveExperiment,absLaser3(:,i,1)',[],[],options);
Am I losing speed because even "sending the file" to the function takes long? Or is there no copying of data, in which case the fitting process itself is computationally expensive?
0 个评论
采纳的回答
Matt J
2024-3-6
编辑:Matt J
2024-3-6
It would definitely be faster to attach the table as an external variable to an anonymous or nested function, than to freshly load it from disk every iteration.
The slow-down might be coming from the time required for table-lookup. A direct computation can sometimes be done entirely within the CPU and its cache, whereas a lookup process, especially in a table that size, would require frequent RAM access.
2 个评论
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!