测试数组是否成比例

RGW*_*ton 4 arrays matlab

有没有一种很好的方法来测试两个数组在MATLAB中是否成比例?像isequal功能一样但是用于测试比例性.

ray*_*ica 5

一种启发式方法是简单地将一个数组除以另一个元素,并确保此结果中的最大值和最小值在一定容差范围内.退化的情况是你在数组中有零.在这种情况下,使用max并且min不会影响此算法的工作方式,因为这些函数会忽略nan值.然而,如果这两个 AB是零个数组,然后有标量的倍数是可能的,所以没有一个答案无限多的.nan如果我们遇到这个问题,我们会将其设置为.

鉴于AB,这样的东西可以工作:

C = A./B; % Divide element-wise
tol = 1e-10; % Divide tolerance

% Check if the difference between largest and smallest values are within the
% tolerance
check = abs(max(C) - min(C)) < tol;

% If yes, get the scalar multiple
if check
    scalar = C(1);
else % If not, set to NaN
    scalar = NaN;
end
Run Code Online (Sandbox Code Playgroud)