在Matlab中递归期间在Matrix中存储值

时间:2015-02-26 00:49:53

标签: matlab recursion shortest-path

我目前正在Matlab中编写最短路径算法。我写了它,以便我可以计算它的总成本。我正在尝试做的是生成一个矩阵,以便我可以在最短路径中的每个元素上存储其当前成本的值。每当我尝试改变我的值时,我会不断得到错误,表明矩阵超出范围或者我的输出变量都没有被定义。这是我的工作代码。如何更改它以便我可以生成一个矩阵,用于存储最短路径中所有元素的当前成本。

以下代码传递成本矩阵和维度的参数,并返回总体成本。 minimumVal是我写的一个函数,它返回三个参数中的最小值。

function output = min_path(cost, m, n)

if ((m < 1) || (n < 1))
    output = 9*10000;

elseif ( m == 1)
    output = cost(m,n);

else
    output = cost(m,n) + minimumVal( min_path(cost, m-1, n-1), min_path(cost, m-1, n), min_path(cost, m, n-1) );

end


end % end min_path

1 个答案:

答案 0 :(得分:0)

你可以试试这个。

function output = min_path(cost, m, n, output)

if ((m < 1) || (n < 1))
    output = 9*10000; % Do something here. This well crash

elseif ( m == 1)
    output(m,n) = cost(m,n);

else
    output = cost(m,n) + minimumVal( min_path(cost, m-1, n-1, output),...
               min_path(cost, m-1, n, output), min_path(cost, m, n-1, output) );

end

end % end min_path

它未经过测试,但应该可以使用。您需要分配足够大的数组以用作主输入。此外,m = 0,n = 0的情况将崩溃。由于我不确定你是怎么想的,所以我不能提出一个不会破坏你的其他代码的解决方案。