Я пытаюсь заполнить массив I Использование рекурсивной формулы. Формула показана ниже.
В этой формуле я уже вычислил массив B и знаю все элементы, а M - это размерность B массив, который равен размеру I массив. Буквы u, v и w обозначают индексы. Моя функция:
function I_matrix = fill_I_recursively(B_matrix, u_ind, v_ind, w_ind)
M = size(B_matrix,1);
if u_ind == 1 && v_ind == 1 && w_ind == 1
I_matrix(u_ind,v_ind,w_ind) = 0;
else
if w_ind > 1
I_matrix(u_ind,v_ind,w_ind) = fill_I_recursively(B_matrix, u_ind, v_ind, w_ind-1) + B_matrix(u_ind,v_ind,w_ind-1);
elseif v_ind > 1
I_matrix(u_ind,v_ind,w_ind) = fill_I_recursively(B_matrix, u_ind, v_ind-1, M-1) + B_matrix(u_ind,v_ind-1,M-1);
else
I_matrix(u_ind,v_ind,w_ind) = fill_I_recursively(B_matrix, u_ind-1, M-1, M-1) + B_matrix(u_ind-1,M-1,M-1);
end
end
Я вызываю эту функцию в моей программе:
I_matrix = NaN(max_boxes,max_boxes,max_boxes);
%%fill the I matrix using recursive function
for u_ind = 1:max_boxes
for v_ind = 1:max_boxes
for w_ind = 1:max_boxes
I_matrix(u_ind,v_ind,w_ind) = fill_I_recursively(B_matrix, u_ind, v_ind, w_ind);
end
end
end
Когда он запускается, я получаю сообщение об ошибке «Назначение имеет больше не-одноэлементных rhs-измерений, чем не-одноэлементных подписок». Не могли бы вы помочь мне решить эту проблему?