我有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
答案 0 :(得分:1)
您不需要for循环或switch语句。您可以在每次加载和处理文件时执行此操作(使用strtok
和str2double
):
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
中的位置。