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

时间:2019-04-23 21:51:57

标签: matlab function variables workspace

因此,我正在使用一个名为cpselect的函数(图像处理工具箱),该函数基本上会返回图像中所需点的像素值(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 :(得分:0)

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

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

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