根据加载的文件修改矩阵条目

时间:2017-05-17 13:01:35

标签: matlab file matrix switch-statement

我有30个这样的文件:

1-1.jpg, 1-2.jpg, ..., 1-10.jpg
2-1.png, 2-2.png, ..., 2-10.png
3-1.gif, 3-2.gif, ..., 3-10.gif

现在我想用这种方式使用一个开关盒:

  • 当我将1-1.jpg加载到1-10.jpg时,我的矩阵的最后一列得到1
  • 当我将2-1.png加载到2-10.png时,我的矩阵的最后一列得到2
  • 当我将3-1.gif加载到3-10.gif时,我的矩阵的最后一列得到3

我该怎么做?我不想使用for循环,因为它会显着减慢代码速度。对于一个文件我做了这个:

switch Filename
  case {'1.jpg'}
    Matrix(end) = 1;
  case {'2.png'}
    Matrix(end) = 2;
  case {'3.gif'}
    Matrix(end) = 3;
end

1 个答案:

答案 0 :(得分:1)

您不需要for循环或switch语句。您可以在每次加载和处理文件时执行此操作(使用strtokstr2double):

intString = strtok(Filename, '.-');   % Get leading integers of file name string
Matrix(end) = str2double(intString);  % Convert string to integer and store in matrix

如果您不想使用前导整数作为识别标签放入Matrix,而是想要使用文件扩展名,则可以使用fileparts函数执行此操作和ismember一样:

extList = {'.jpg'; '.png'; '.gif'};   % Create a list of valid extensions
[~, ~, ext] = fileparts(Filename);    % Get the file extension
[~, index] = ismember(ext, extList);  % Find its index in the list
Matrix(end) = index;

每种文件类型的识别标签都是extList中的位置。