所以看起來model
預計公測是一個1×N個陣列,並返回一個1xM陣列。因此,您首先需要修改model
以獲取beta的de.nP x N數組,並返回de.nP x M數組(並且您將要向模型中的矢量化計算)。
我不知道該怎麼辦y M的。如果它只是一個數字,你不需要改變任何東西。如果是1xM陣列本身,那麼你需要做的
aux=y-repmat(yM, [size(y,1) 1]);
然後要更換
ObjVal=dot(aux,aux);
與
ObjVal=dot(aux,aux,2);
我會補充說,除非你提供的告誡我們的代碼實際上可以運行(即不依賴外部的東西,如de
和model
的定義),很難給出明確的答案。
編輯哦,我想你需要一個像
F=OF(P1',data);
東西來取代你的for循環編輯
我認爲有以下正確的矢量化功能model
:
function y = NSS(beta, mats)
gam1 = (1./beta(:,5)) * mats;
gam2 = (1./beta(:,6)) * mats;
aux1=1-exp(-gam1);
aux2=1-exp(-gam2);
y = repmat(beta(:,1), [1 length(mats)]) + ...
repmat(beta(:,2), [1 length(mats)]) .* (aux1./gam1) + ...
repmat(beta(:,3), [1 length(mats)]) .* (aux1./gam1 + aux1 - 1) + ...
repmat(beta(:,4), [1 length(mats)]) .* (aux2./gam2 + aux2 - 1);
end
同樣,因爲我不能運行你的代碼,我不100%肯定這會起作用,但我認爲沒關係。
我剛來到這裏說,我很佩服你的用戶名 –
我不熟悉'model'命令;這是從一個Matlab工具箱? – macduff
我們需要知道模型函數的功能。你能提供它的定義嗎? 。 –