MATLAB:如何在使用return后保持输出值

问题描述 投票:0回答:1

我有这段代码:

function [S,r1,r2,c1,c2] = xor2imgs(org,templete,Diff)
    while (r+O - 1) <= N
           while (c+P - 1) <= M
               if sum_temp <= sum(sum(sum(org(r:r+O-1,c:c+P-1)))) %cond #1              
                   matrix = org;
                   matrix(r:r+O-1,c:c+P -1) = org(r:r+O-1,c:c+P-1)-templete(1:O,1:P); 
                   mat_sum = sum(sum(sum(matrix)));
                   diff2 = org_sum-mat_sum;               
                   if (mat_sum == diff) && (diff2 > Diff) %cond #2
                       S = org_sum-mat_sum; 
                       r1 = r;
                       r2 = r1+O-1;
                       c1 = c;
                       c2 = c1+P-1;
                       return ; %must return to the original function yet keep the output values 
                   end
               end
           end
        end 
end

使用return后,如何将[S,r1,r2,c1,c2]的值传递给调用函数?我调用了函数

 [S,r1,r2,c1,c2] = xor2imgs(org,newtemplete,S);

在另一个函数,但它为每个输出保持返回零....

matlab matlab-deployment
1个回答
0
投票

我假设所有变量都在while循环上面定义...

您可以使用多个break语句。需要多个break语句的原因是因为你有嵌套循环,并且一个break语句是不够的。我在你的代码中添加了一个计数器变量,当你需要打破循环时,它会变为1:

counter = 0;
function [S,r1,r2,c1,c2] = xor2imgs(org,templete,Diff)
    while (r+O - 1) <= N
        while (c+P - 1) <= M
            if sum_temp <= sum(sum(sum(org(r:r+O-1,c:c+P-1)))) %cond #1              
                matrix = org;
                matrix(r:r+O-1,c:c+P -1) = org(r:r+O-1,c:c+P-1)-templete(1:O,1:P); 
                mat_sum = sum(sum(sum(matrix)));
                diff2 = org_sum-mat_sum;               
                if (mat_sum == diff) && (diff2 > Diff) %cond #2
                    S = org_sum-mat_sum; 
                    r1 = r;
                    r2 = r1+O-1;
                    c1 = c;
                    c2 = c1+P-1;
                    counter = 1;
                    break;
                end
            end
        end
        if isequal(counter,1)
            break;
        end
    end 
end
© www.soinside.com 2019 - 2024. All rights reserved.