【发布时间】:2019-01-07 13:58:32
【问题描述】:
在这个公式中,我已经计算了 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
当它运行时,我收到错误消息“分配的非单一右轴维度比非单一下标更多”。你能帮我解决这个问题吗?
【问题讨论】:
-
我不清楚为什么这需要递归。为什么不能从
0,0,0(或1,1,1用于MATLAB 索引)开始并通过循环遍历u、v和w来填充矩阵?I的元素只依赖于先前计算的值 - 即u、v或 `w.递归使这个问题复杂化。
标签: matlab recursion multidimensional-array