uq_GeneralIsopTransform cannot tackle kernel marginals?

Dear all

I would like to first express my gratitude to UQ team for the amazing tool.

I encountered one error when creating PCE model. When I debug it, this error occurred when calling the uq_GeneralIsopTransform function. Specifically, I want to transform a 5-dimensional independent standard normal vector X into a random vector in the physical space, whose marginals and coupla are created using the following code:
myMarginals = uq_KernelMarginals(forecast_error’); myCopula = uq_GaussianCopula(C, ‘Spearman’);

However, when I ran the following code:
sample = uq_GeneralIsopTransform(X, xInput.Marginals, xInput.Copula, myMarginals, myCopula);

the following error occurred:
Error using uq_all_invcdf (line 17)
Unrecognized field name “KS”.

Error in uq_IsopTransform (line 98)
Y(:,ii) = uq_all_invcdf(cdfx(:,ii), Y_marginals(ii));

This error lies in the line 17 of uq_all_invcdf:
if strcmpi(Marginals(ii).Type, ‘ks’)
Marginals(ii).Parameters = Marginals(ii).KS;

However, the kernel marginals structure doesn’t have a field named ‘KS’. Am I missing some important points? Or the uq_GeneralIsopTransform cannot be used with kernel marginals?

I would appreciate if someone can help me. Thank you very much.

Best Regards,
Yuanxi Wu

I have fixed this problem by first creating an input object using uq_createInput. And then use the object.Marginals and object.Copula in the uq_GeneralIsopTransform function.

Previously I thought I can directly use the myMarginals and myCopula without creating the input object.

1 Like