在MATLAB功能中完成递归循环后,是否不可能分配输出参数



执行以下函数时,我会在呼叫" find_node"中未分配的以下错误消息"输出参数"(也许还有其他)。我认为问题在于,递归循环后产生了一些输出。我该如何解决?

function  max_idx = find_node(wt)
persistent all_idx_max;
node_degree=sum(wt,2);
maxval = max(node_degree);
all_nodes_with_max_val = ismember(node_degree,maxval);
idx_max = find(all_nodes_with_max_val); 
if isempty(all_idx_max)
all_idx_max=1:8;
end
if size(idx_max,1)==3
    max_idx=all_idx_max(idx_max(1))
elseif size(idx_max,1)>1
    all_idx_max=idx_max;
    find_node(wt(idx_max,idx_max));  <--problem happens in this path
else 
    max_idx=all_idx_max(idx_max)
end

我忘了将输出添加到递归零件

function  max_idx = find_node(wt)
persistent all_idx_max;
node_degree=sum(wt,2);
maxval = max(node_degree);
all_nodes_with_max_val = ismember(node_degree,maxval);
idx_max = find(all_nodes_with_max_val); 
if isempty(all_idx_max)
all_idx_max=1:8;
end
if size(idx_max,1)==3
    max_idx=all_idx_max(idx_max(1))
elseif size(idx_max,1)>1
    all_idx_max=idx_max;
    ***max_idx =*** find_node(wt(idx_max,idx_max));  <--problem happens in this path
else 
    max_idx=all_idx_max(idx_max)
end

最新更新