Вот более читаемая версия кода выше с симулированными значениями для таблиц.
Моя проблема в том, как оптимизировать скорость двух вложенных циклов в конце (мне нужно запустить этот цикл, возможно, миллион раз).
quadpoints=800;
nbWe=100;
penddd=zeros(quadpoints,nbWe);
penddu=zeros(quadpoints,nbWe);
pendud=zeros(quadpoints,nbWe);
penduu=zeros(quadpoints,nbWe);
penudd=zeros(quadpoints,nbWe);
penudu=zeros(quadpoints,nbWe);
penuud=zeros(quadpoints,nbWe);
penuuu=zeros(quadpoints,nbWe);
nsp=rand(100,50,100);
ypos=min(sort(poissrnd(50,quadpoints,1),'ascend'),100);
uypos=min(ypos,100);
etapos=min(sort(poissrnd(25,quadpoints,1),'ascend'),50);
uetapos=min(etapos,50);
Vpos=min(sort(poissrnd(50,quadpoints,nbWe),'ascend'),100);
uVpos=min(Vpos,100);
for k=1:quadpoints
nspdd=nsp(ypos(k),etapos(k),:);
nspdu=nsp(uypos(k),etapos(k),:);
nspud=nsp(ypos(k),uetapos(k),:);
nspuu=nsp(uypos(k),uetapos(k),:);
dVvec=Vpos(k,:);
uVvec=uVpos(k,:);
for we=1:nbWe
penddd(k,we)=nspdd(dVvec(we));
penddu(k,we)=nspdd(uVvec(we));
pendud(k,we)=nspdu(dVvec(we));
penduu(k,we)=nspdu(uVvec(we));
penudd(k,we)=nspud(dVvec(we));
penudu(k,we)=nspud(uVvec(we));
penuud(k,we)=nspuu(dVvec(we));
penuuu(k,we)=nspuu(uVvec(we));
end
end