function [c,y] = aPCE(po,input,input_mc) % input: number of variables (raw) x number of data (column) % number of random variables [nrv,~] = size(input); % multi index alpha = multi_index(nrv,po); % number of samples to make an aPCE model ns_param = 2; num_pol_term = length(alpha); % number of polynomial basis functions ns = ns_param*num_pol_term; % allocate input x1 = input(1,:); x2 = input(2,:); x3 = input(3,:); % training samples % inputs x1_sample = datasample(input(1,:),ns,'Replace',true); x2_sample = datasample(input(2,:),ns,'Replace',true); x3_sample = datasample(input(3,:),ns,'Replace',true); % output y_sample = ishigami([x1_sample;x2_sample;x3_sample]); y_sample = y_sample'; % MCS samples x1_mc = input_mc(1,:); x2_mc = input_mc(2,:); x3_mc = input_mc(3,:); % coefficients of polynomial basis functions for cp = 0:po c1 = aPCE_coef(cp,x1); c2 = aPCE_coef(cp,x2); c3 = aPCE_coef(cp,x3); Psi1(cp+1,:) = polyval(c1,x1_sample); Psi2(cp+1,:) = polyval(c2,x2_sample); Psi3(cp+1,:) = polyval(c3,x3_sample); Psi1_mc(cp+1,:) = polyval(c1,x1_mc); Psi2_mc(cp+1,:) = polyval(c2,x2_mc); Psi3_mc(cp+1,:) = polyval(c3,x3_mc); end % multivariate polynomial function for j = 1:num_pol_term Psi(:,j) = Psi1( alpha(j,1)+1,: ).*Psi2( alpha(j,2)+1,: ).*Psi3( alpha(j,3)+1,: ); Psi_mc(:,j) = Psi1_mc( alpha(j,1)+1,: ).*Psi2_mc( alpha(j,2)+1,: ).*Psi3_mc( alpha(j,3)+1,: ); end % PCE coefficients by ordinary least square c = double( lscov(Psi, y_sample) ); % MCS y = Psi_mc*c;
时间: 2024-04-18 14:26:16 浏览: 101
kcf_apce_kcf——apce_kcf_apcekcf_kcfapce_APCE_源码.zip
这段代码是用于实现基于多项式混沌展开(aPCE)的模型训练和预测。下面是代码的主要步骤解释:
1. 获取输入变量的数量和样本数据的数量。
2. 使用多重指标函数计算多重指标 alpha。
3. 定义用于构建 aPCE 模型的样本数量和多项式基函数的数量。
4. 对每个输入变量进行随机采样,得到训练样本。
5. 使用采样的训练样本作为输入,计算相应的输出样本。
6. 对每个输入变量的多项式基函数进行求解,并在采样的训练样本和 Monte Carlo 模拟样本上进行求解。
7. 构建多变量多项式函数,通过乘积形式组合各个单变量多项式基函数。
8. 使用普通最小二乘法(Ordinary Least Squares)计算 PCE 的系数 c。
9. 使用 Monte Carlo 模拟样本和计算得到的系数 c,预测输出 y。
希望对你有所帮助!如果还有其他问题,请随时提问。
阅读全文