Deleting certain elements from an array without looping
显示 更早的评论
Hi folks,
I have a cell array containing all the file names in a subfolder. I want to remove the filenames that are not 21 characters in length.
I have tried:
fileNames(length(fileNames(:)) ~= 21) = [];
but this only deletes one entry each time I run it, and not the correct ones eather!
May I please ask where I've gone wrong and how to fix it?
full code:
subFolders = dir(sourcePath);
subFolders = subFolders([subFolders(:).isdir]);
subFolders = subFolders(~ismember({subFolders(:).name},{'.','..'}));
fileNum = numel(subFolders);
folderDir = fullfile(subFolders(i).folder, subFolders(i).name);
folderDir = dir(folderDir);
folderDir = folderDir(~ismember({folderDir(:).name},{'.','..'}));
fileNames = {folderDir.name};
Thanks!
3 个评论
Rik
2021-11-8
What data type is fileNames?
Chunru
2021-11-8
Can you provide a small part of fileNames so we know what it looks like?
Teshan Rezel
2021-11-8
采纳的回答
更多回答(1 个)
fileNames = {'ThisIsADummyFile', '012345678901234567891'}
idx = cellfun(@(x) length(x)~=21, fileNames)
fileNames(idx) =[]
类别
在 帮助中心 和 File Exchange 中查找有关 Performance and Memory 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!