0

我正在使用 sift 进行一个名为图像检索的项目,我想从文件系统中检索图像。我使用的逻辑是:

  1. 将图像文件名传递给函数。
  2. 检查要满足的条件。
  3. 如果满意,将文件名存储在数组中

当我显示数组时,我得到文件名,例如。F:\SIFT_Yantao\demo-data\batting.jpg 和数组的长度为 36 现在我的问题是我应该如何从该数组中提取文件名并显示它?如果我使用 for 循环作为..

    for j=1:numel(array)

我的数组中有 36 个元素,而它只是 1 个图像的名称......

4

1 回答 1

2

字符串是 type 的数组char,因此您(本质上)正在尝试遍历字符串中的字符。如果要创建字符串数组,每个字符串的长度可能不同,则需要使用字符串元胞数组。一个例子如下:

myArray = {'C:\some\path\to\a\file.ext', 'C:\some\path\to\another\file.ext'};
for jj = 1:numel(myArray)
    disp(myArray{jj}); % Display each element
end

要附加到现有的元胞数组,您可以:

myArray = {}; % Initialise empty cell array
for myLoopCounter = something
    myArray = [myArray {theNewString}];
end

如果您知道数组在循环之前将有多少项,那么您可以使用

myArray = cell(numberOfElements, 1);
for myLoopCounter = something
    myArray{myLoopCounter} = theNewString;
end
于 2013-04-03T11:03:34.370 回答