«Внутренние размеры матрицы должны совпадать» - но это не должно быть матрица - PullRequest
0 голосов
/ 24 мая 2018

Ниже приведен фрагмент функции, которую я определяю:

function [V1, V2] = lambert(R1, R2, t, string)

r1 = norm(R1);
r2 = norm(R2);

z = -100;
while F(z,t) < 0
    z = z + 0.1;
end

tol = 1.e-8;
nmax = 5000;
ratio = 1;
n = 0;

while (abs(ratio) > tol) & (n <= nmax)
    n = n + 1;
    ratio = F(z,t)/dFdz(z);
    z = z - ratio;
end

f = 1 - y(z)/r1;
g = A*sqrt(y(z)/mu);
gdot = 1 - y(z)/r2;

V1 = (R2-f*R1)/g;
V2 = (gdot*R1-R1)/g;

function dum = y(z)
    dum = r1 + r2 + A*(z*S(z) - 1)/sqrt(C(z));
end

Когда я запускаю этот код с некоторыми векторами R1, R2, я получаю:

Ошибка при использовании *.
Размеры внутренней матрицы должны совпадать.

Это происходит в следующих строках:

V1 = (R2-f*R1)/g;
V2 = (gdot*R1-R1)/g;

Я думаю, это связано с тем, чтоf и gdot и g - это матрицы, размеры которых несовместимы с R1 и R2.Однако, как я их определил, они должны быть просто скалярами.Я не понимаю, что в коде заставляет их быть матрицами.

Я пытался использовать .* вместо * и т. Д., Но безуспешно.

...