Я создал класс, и в одном из его методов мне нужно было вычислить расстояние между двумя точками. Поэтому я написал обычную функцию под названием «удаленность», чтобы сделать это для меня.
Ошибка компиляции:
При компиляции "удаленность" была
определяется как переменная, и это
переменная неинициализирована.
«удаленность» также является именем функции
и предыдущие версии MATLAB
вызвали функцию.
Однако MATLAB 7 запрещает использование одного и того же имени в том же контексте, что и функция и переменная.
Ошибка в ==> TRobot> TRobot.makeVisibilityGraph на 58
obj.visiblityGraph (k, k + 1) = удаленность (:, obj.VGVertices (k), obj.VGVertices (:, k + 1));
Я думал, что имя remoteness
может быть именем другой функции, но когда я изменил ее имя на kamran
, ошибка не исчезла. Следует отметить, что я могу без проблем использовать функцию kamran
(или remoteness
) в командной строке.
Пример командной строки:
>> kamran([0,0],[3,4])
ans = 5
Код функции kamran
находится в отдельном файле m.
Код для kamran
функции:
function dist = kamran(v1,v2)
dist = sqrt( (v1(1) - v2(1)) ^2 + (v1(2) - v2(2)) ^2 );
Пример кода для использования функции kamran
:
function obj = makeVisibilityGraph(obj)
verticesNumber = 0;
for num = 1: size(obj.staticObstacle,2)
verticesNumber = verticesNumber + size(obj.staticObstacle(num).polygon,2);
end
% in the below line, 2 is for start and goal vertices
obj.visibilityGraph = ones(2 + size(obj.VGVertices,2)) * Inf;
for j=1 : size(obj.staticObstacle,2)
index = size(obj.VGVertices,2);
obj.VGVertices = [obj.VGVertices, obj.staticObstacle(j).polygon];
obj.labelVGVertices = [obj.labelVGVertices, ones(1,size(obj.staticObstacle(j).polygon,2))* j ];
for k = index+1 : (size(obj.VGVertices,2)-1)
obj.visiblityGraph(k,k+1) = kamran(:,obj.VGVertices(k),obj.VGVertices(:,k+1));
end
% as the first and last point of a polygon are visible to each
% other, so set them visible to each other
obj.visibilityGraph(index+1,size(obj.VGVertices,2)) = ...
kamran( obj.VGVertices(:,index+1), obj.VGVertices(:,size(obj.VGVertices,2)));
end
end