gusucode.com > vision工具箱matlab源码程序 > vision/+vision/+internal/+inputValidation/checkPoints.m
function checkPoints(pointsIn, fileName, varName, allowGPUArrays) % Checks if points are valid. Allows points to be any numeric type. %#codegen %#ok<*EMCA> if nargin ~= 4 allowGPUArrays = false; end coder.internal.errorIf( ~isnumeric(pointsIn)... && ~vision.internal.inputValidation.isValidPointObj(pointsIn), ... 'vision:points:ptsClassInvalid', varName); if isnumeric(pointsIn) checkPts(pointsIn, fileName, varName, allowGPUArrays); else checkPointObject(pointsIn, fileName, varName, allowGPUArrays); end %-------------------------------------------------------------------------- function checkPts(value, fileName, varName, allowGPUArrays) if allowGPUArrays && isa(value, 'gpuArray') checkPtsGPU(value, fileName, varName); else checkBuiltinPts(value, fileName, varName); end %-------------------------------------------------------------------------- function checkPointObject(value, fileName, varName, allowGPUArrays) if isa(value.Location,'gpuArray') if allowGPUArrays checkPtsGPU(value.Location,fileName, varName); else str = class(value); cmd = sprintf('<a href="matlab:help %s/gather">gather</a>',str); error(message('vision:points:gpuArrayNotSupportedForPtObj',str,cmd)); end else checkBuiltinPts(value.Location,fileName, varName); end %-------------------------------------------------------------------------- function checkBuiltinPts(value, fileName, varName) validateattributes(value, {'numeric'}, ... {'2d', 'nonsparse', 'real', 'size', [NaN, 2]}, fileName, varName); %-------------------------------------------------------------------------- function checkPtsGPU(value, fileName, varName) hValidateAttributes(value, {'numeric'}, ... {'2d', 'real'}, fileName, varName); % size if size(value, 2) ~= 2 validateattributes(ones(1,3),{'numeric'},{'size',[NaN, 2]}, fileName, varName); end