Понимание кода Matlab (индексы) - PullRequest
0 голосов
/ 26 апреля 2018

Я никогда раньше не использовал Matlab, и я пытаюсь преобразовать этот раздел кода в Python, но я не уверен, что действительно понимаю, что происходит.Вот код:

  % Calculate the price at all interior nodes
    offsetConstants = [aj(1); cj(end)];
    for i = N:-1:1
        price(2:end-1,i) = A*price(2:end-1,i+1);
        % Offset the first and last terms
        price([2 end-1],i) = price([2 end-1],i) + ...
            offsetConstants.*price([1 end],i+1);

До сих пор я использовал http://mathesaurus.sourceforge.net/matlab-numpy.html, чтобы пройти через это, но я все еще потерялся в некоторых частях.Вот что у меня есть

OffsetConstants - это создание матрицы с записями из aj и cj

. Цикл for берет цену на все значения, кроме 1-й и последней строки, умножает ее на A и затем добавляет обратно.в первом и последнем терминах.

Может ли кто-нибудь объяснить мне это лучше?

1 Ответ

0 голосов
/ 26 апреля 2018
offsetConstants = [aj(1); cj(end)];

Создать вектор offsetConstants из 2 терминов.Один - первый член в aj, а второй - последний член в cj.Вы абсолютно правы в этом.

for i = N:-1:1

Обратный стиль выглядит так, как будто вы хотите вернуть столбцы в price.Но будьте осторожны с диапазоном.i+1 поднимается до N+1, и я предполагаю, что матрица price имеет столько столбцов.

    price(2:end-1,i) = A*price(2:end-1,i+1);

Вы начинаете со столбца N+1, берете весь столбец за исключением первого и последнего слагаемых и умножаете на A, A либо на скаляр, либо на матрицу (N+1)x(N+1).Затем вы сохраняете продукт в столбце N.

    price([2 end-1],i) = price([2 end-1],i) + ...
        offsetConstants.*price([1 end],i+1);

Наконец, вы берете первый и последний члены N+1 -ого столбца, поэлементно умножаете его на offsetConstants и добавляете к второй и второй-последний условия.

Повторяйте эту процедуру, пока не возьмете столбец № 2 и не вернете его в столбец № 1.

Примечание: price([2 end-1],i) эквивалентно [price(2,i),price(end-1,i)], что НЕ price(2:end-1,i).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...