Converting variable length vector into variable length input argument for function
3 次查看(过去 30 天)
显示 更早的评论
I'm trying to turn a function output vector of variable length into a variable number of arguments to be fed into another function, so each element of the output vector becomes one input argument for the next function below:
function [pd]=fit(xdata,fitname,pdfunc,start)
[params]=mle(xdata, 'pdf',pdfunc, 'start',start);
pd=makedist(fitname,deal(num2cell(params)));
end
xdata is some data array, fitname is something like 'Exponential' or 'GeneralizedPareto', pdfunc is an anonymous function such as pdfgp=@(x,k,sigma,theta) gppdf(x,k,sigma,theta), and start is the initial parameter values required by mle.
Right now this produces a "Not enough input arguments" error. I've also tried variants on using eval, deal and num2cell with no luck. Any help would be appreciated. Thanks!
0 个评论
采纳的回答
Walter Roberson
2018-1-24
This will not do any good. The output of mle is a numeric parameter estimate scalar or row vector. The parameters of makedist must be first the fitting name, and then name/value pairs.
You can use something like
temp = num2cell(params);
param_names = {'mu', 'sigma'};
pv_pairs = [param_names; temp];
pd = makedist(fitname, pv_pairs{:});
This counts on cell expansion going down columns first.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!