在MatLab函数中使用工作区中可更改名称的变量

mwkjh3gx  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(209)

我正在使用一个名为cpselect(图像处理工具箱)的函数,它基本上返回我想要在图像中的点的像素值(x,y)。然后将像素值作为变量保存在工作区中。所以我有两个问题:
1.我需要在函数中使用这些变量。我有几个图像,在我使用cpselect之后,我得到了固定的点、固定的点1、固定的点2,等等。在工作区。

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

有没有办法在同一函数中使用这些变量?它们是在工作区中创建的,而不是在函数本身中创建的,这就是我在尝试使用它时收到错误的原因。
1.在我找到了使用它的方法后,就有了第二个问题。我得到的变量是fiedPoints、fiedPoints1、fiedPoints2等等。我想把它们都放在一个单元数组中,以便在相同的函数或另一个函数中使用。我到底该怎么做呢?我知道像这样动态创建变量名是不好的,但考虑到这种情况,我认为我别无选择。
先谢谢你

wxclj1h5

wxclj1h51#

使用the documentation中所示的最后一个语法可以解决这两个问题:

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

返回的数组是p x2数值数组,其中每一行都是所选点之一。

相关问题