Я работаю над кодом fortran, чтобы преобразовать его в matlab. Я столкнулся с некоторыми проблемами с параметрами! Ниже приводится код, который дает мне ошибкуНужна помощь в размерности матрицы при преобразовании из fortran в matlab
do 10 p = 1,m
d(p) = 0.d0
d(p) = x - x1(i,p) - x2(i,p) -
& double_sum(i,p,n,m,str,mot)
10 continue
double_sum = 0.d0
do 10 j = 1,m
do 20 k = 1,n
if (k .eq. i) then
else
double_sum = double_sum + mot(k,j,i,p)*str(k,j)
endif
20 continue
10 continue
, к которому я преобразовал его в MATLAB, как:
for p=1:m
d(p)=0;
double_sum = 0;
for j=1:m
for k=1:n
if k==i
else
double_sum = double_sum + mot(k,j,i,p)*str(k,j);
end
end
end
d(p)=x - x1(i,p) - x2(i,p)-double_sum(i,p,n,m,str,mot);
end
Я получаю ошибку «индекса превышая матрицы».
Линия ошибки для этой части моего кода:
d(p)=x - x1(i,p) - x2(i,p)-double_sum(i,p,n,m,str,mot);
Так что, если я игнорирую double_sum (я, р, п, м, ул MOT); эта часть, код работает совершенно.
Я знаю, что матрица double_sum имеет 6D, которая выглядит подозрительной для меня, но я хотел бы иметь вашу поддержку для успешного переноса этой части кода fortran.
Примечание: задан тот же вопрос на форуме matlab. Но stackoverflow имеет больше шансов, что люди будут работать на fortran 77. Поэтому просим его здесь.
Как вы определили это в своем коде, 'double_sum' является только скаляром. Что вы пытаетесь выполнить при вызове 'double_sum (i, p, n, m, str, mot)'? – BillBokeey
После первой инициализации double_sum = double_sum + mot (k, j, i, p) * str (k, j) также есть. Поэтому я могу сказать, что это 6D в fortran. То же самое я хочу «перевести» в matlab –
На самом деле я слишком стараюсь понять код. Я получил этот код, и мне нужно перевести его с помощью Matlab. У меня очень слабое знание fortran. Следовательно, ваш ответ имеет большое значение. –