Я пытаюсь преобразовать код Matlab в Python3 код: SP C код Matlab
Код (Matlab который я хочу преобразовать в Python)
Я застрял на следующем ( выделенном запутанном разделе ):
if strcmp(TV_QV,'tv')
u = innerprod_one_exc(E,U,k,n);
u = u(:);
%initilization
a = u/norm(u);
% main iteration for constrained version
object = 0.5*G(k)^2*rho(n)*sum(abs(P{n}*a)) - G(k)*a'*u;
for nn = 1:1000
df = P{n}'*sign(P{n}*a);
dL = (0.5*G(k)^2*rho(n)*df - G(k)*u + G(k)^2*a)/G(k)^2;
al = [0 0.1 0.01 0.001 0.0001 0.00001];
for ai = 1:length(al)
a2 = a - al(ai)*dL;
a2 = a2/norm(a2);
score(ai) = 0.5*G(k)^2*rho(n)*sum(abs(P{n}*a2)) - G(k)*a2'*u;
end
[object2 ai] = min(score);
a2 = a - al(ai)*dL;
a2 = a2/norm(a2);
if abs(object2 - object)/II(n) < 1e-3
break;
else
a = a2;
object = object2;
end
end
lam = norm(a);
u = a/lam;
U{n}(:,k) = u;
v{n} = u;
div = div + rho(n)*sum(abs(P{n}*u));
.... % code continues on
Анализ
По моему анализу RHS score(ai) = ...
является вектором, но score(ai)
будет просто одним элементом в матрице / массиве. Таким образом, после for-l oop, score
будет иметь 6 векторных элементов, длина которых может варьироваться.
Вопрос
В следующем:
[object2 ai] = min(score);
похоже, что object2
и ai
будут только с плавающей точкой и целым числом соответственно. Тем не менее, я изо всех сил пытаюсь понять, как это возможно из min(score)
, так как score
имеет много 6 векторных элементов различной длины.
Если бы кто-то мог объяснить это, это было бы очень признательно!