Используйте переменные с изменением имен из рабочего пространства в функции MatLab - PullRequest
0 голосов
/ 24 апреля 2019

Итак, я использую функцию cpselect (Image Processing Toolbox), которая в основном возвращает значение пикселя (x, y) точек, которые я хочу в изображении. Значение пиксела затем сохраняется в рабочей области как переменная. Итак, у меня есть две проблемы:

1) Мне нужно использовать эти переменные в функции. У меня есть несколько изображений, и после использования cpselect в рабочей области я получаю fixedPoints, fixedPoints1, fixedPoints2 и т. Д.



function [] = ControlPoints()
%function that reads images in directory and uses cpselect to each 
    imagefiles = dir('*.jpg');      
    nfiles = length(imagefiles); 
    for ii=1:nfiles
       currentfilename = imagefiles(ii).name;
       currentimage = imread(currentfilename);
       cpselect(currentimage,currentimage); 
       pause; 
     end
     a = fixedPoints1;  % returns error(undefined variable)   
end

Есть ли способ использовать эти переменные в одной и той же функции? Они создаются в рабочей области, а не в самой функции, поэтому я получаю ошибки, когда пытаюсь ее использовать.

2) После того, как я нашел способ использовать его, возникает вторая проблема. Переменные, которые я получаю, являются fixedPoints, fixedPoints1, fixedPoints2 и т. Д ... Я хочу поместить их все в массив ячеек для использования в той же функции или в другой. Как именно я могу это сделать? Я понимаю, что плохо динамически создавать такие имена переменных, но, учитывая обстоятельства, я не думаю, что у меня есть выбор.

заранее спасибо

1 Ответ

0 голосов
/ 24 апреля 2019

Обе проблемы можно решить, используя последний синтаксис, показанный в документации :

[selectedMovingPoints,selectedFixedPoints] = cpselect(currentimage,currentimage,'Wait',true)

Возвращаемые массивы: p x2 числовых массива, где каждая строка является одной из выбранных точек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...