今天调程序时遇到一个bug 感觉有点意思 也许有人会遇到类似的问题吧

问题

说手上有一段代码 原本是希望在一个文件夹中读取出其中所有音频文件的

tdir=dir(fullfile(SoundDir,SoundFileName));
NumSounds=length(tdir);
[NameSounds{1:NumSounds}]=deal(tdir.name);%%%%%此处省略X行%%%%%[Signal.yy, Signal.Fs] = audioread(fullfile(SoundDir,NameSounds{soundI}));

跑到这崩溃了 回头一看原因笑了:dir把当前目录’.’和上级目录’..’都读出来了(当然,也有当前目录里的其他目录) 这些目录audioread肯定处理不了

解决

好吧 那就在dir得到tdir之后把其中文件夹的字段都删除掉好了

但是dir返回的是一个N*1的struct 这是一个栗子

>>s =dir('.')%以下是数据的脚本
s = struct;
s(1, 1).name = '.';
s(1, 1).date = '30-1月-2016 16:15:05';
s(1, 1).bytes = 0;
s(1, 1).isdir = true;
s(1, 1).datenum = 736359.67714120366;
s(2, 1).name = '..';
s(2, 1).date = '30-1月-2016 10:14:28';
s(2, 1).bytes = 0;
s(2, 1).isdir = true;
s(2, 1).datenum = 736359.42671296292;
s(3, 1).name = 'KeyboardMouse.ini';
s(3, 1).date = '28-6月-2013 08:07:00';
s(3, 1).bytes = 367;
s(3, 1).isdir = false;
s(3, 1).datenum = 735413.33819444443;

好在dir很贴心的设计了isdir这个域 我只要留下isdir的值为0的部分就行
但问题在于 怎么删除掉这n个目录或者只保留下N个文件
恶心的一点在于 struct的rmfield函数会直接删掉整个字段
好吧 那就把文件的数据提取出来合成成一个新的struct

function outst = deletedir(inst)outst = struct('name',{},'date',{},'bytes',{},'isdir',{},'datenum',{});
for k = 1:length(inst)if ((~inst(k).isdir) & (~strcmp(inst(k).name,'..')))outst = [outst;inst(k)];end
end
return

不知道为什么 有几个目录中’..’的isdir居然是0 可能是因为它的上级是磁盘驱动器吧 所以加了~strcmp(inst(k).name,’..’)这个条件

补充

回过头来考虑了一下 在当初使用dir时就该直接使用

dir(dir(fullfile(SoundDir,*.wav)))

这种形式 顺便还能过滤掉之后不能audioread读取的文件类型

Matlab中dir使用中遇到的一些问题相关推荐

  1. Matlab中dir命令

    Matlab使用dir函数获得指定文件夹下的所有子文件夹和文件,并存放在在一种为文件结构体数组中. dir函数可以有调用方式为: dir('.')列出当前目录下所有子文件夹和文件 dir('G:\Ma ...

  2. Matlab中dir函数使用小技巧

    想必很多小伙伴在matlab中对文件进行批处理时经常会使用dir函数吧,dir函数用于列出文件夹中的内容.使用语法如下: % Matlabdir % 列出当前文件夹中的文件和文件夹,当然调用方式也可以 ...

  3. matlab中dir代表什么意思,matlab中 sizes.DirFeedthrough 什么意思

    s-function也就是system-function的缩写.说得简单,s-function就是用MATLAB所提供的模型不能完全满足用户,而提供给用户自己编写程序来满足自己要求模型的接口.要了解 ...

  4. matlab中facedetector,Matlab人脸检测方法(Face Parts Detection)详解

    今天同学让我帮忙制作一个人脸表情识别的样本库,其中主要是对人脸进行裁剪,这里用到了一个相对较新的Matlab人脸检测方法Face Parts Detection,网上百度了一下发现关于Matlab人脸 ...

  5. matlab 中的dir函数使用

    Matlab使用dir函数获得指定文件夹下的所有子文件夹和文件,并存放在在一种为文件结构体数组中.   dir函数可以有调用方式为:   dir('.')列出当前目录下所有子文件夹和文件 dir('G ...

  6. matlab dir datenum,matlab中的datenum

    matlab中的datenum,根据输入参数返回相应日期时间的时间数值. 天为整数,若出现一天中的小时,则在当天0时的基础上加上n/24. 比较好玩的是时间数值0代表的是00-Jan-0000,即00 ...

  7. matlab中help所有函数功能的英文翻译

    doc funname 在帮助浏览器中打开帮助文档 help funname 在命令窗口打开帮助文档 helpbrowser 直接打开帮助浏览器 lookfor funname 搜索某个关键字相关函数 ...

  8. matlab中读文件的行数_[转载]MATLAB中获取大型文本文件行数方法研究(转)

    在工作中会有很多特殊的需要,比如我现在就遇到一个需要将大型的文本格式数据文件(比如5G)读取到MATLAB中,同时进行一定的处理.由于XP的内存是绝对没有办法将5G的数据一次性加载到工作空间的,此时一 ...

  9. matlab中fdyn,Matlab的用法总结

    1. 对序列进行洗牌 randperm() randperm()产生随机的序列 %if filepaths 是一个5*1的结构体,then cshuffle = randperm(length(fil ...

  10. Matlab中的一些小技巧

    转自:http://blog.chinaunix.net/uid-20551209-id-3202608.html 1.. Ctrl+C 中断正在执行的操作 如果程序不小心进入死循环,或者计算时间太长 ...

最新文章

  1. SQL Server查询重复数据
  2. 选好财务软件做好企业管理
  3. Linux的软件包封装格式有,linux软件安装包详解---全
  4. 构建Windows Server 2008虚拟实验室
  5. [机器学习-Sklearn]K-means(K均值)学习与总结
  6. 动手动脑java异常处理
  7. wpf tabitem 点击事件_Mindfusion教程:WPF中的Fishbone(Ishikawa)图
  8. 音视频开发(30)---新一代视频编码标准:HEVC、AVS2和AV1性能对比报告
  9. android 6.0 蓝牙进程,Android6.0-蓝牙权限问题
  10. 互联网域名解析系统DNS的工作原理及相关服务配置
  11. Kendo UI开发教程(25): 单页面应用(三) View
  12. figma客户端_小白的Figma入门手册
  13. 管理Active Directory的工具
  14. Kconfig Kbuild
  15. 完全删除conime.exe
  16. 大话西游2人数最多服务器,大话2大话各个服务器狂人榜排名 看大话如今服务器...
  17. 【FreeRTOS】FreeRTOS学习笔记(3)— FreeRTOS任务与协程
  18. 幼儿园保育员好吗 就业前景如何
  19. ​复盘共享经济2020:陷入艰难求生困境,转型能否拯救亏损怪圈
  20. FPGA问题记录之:Warning (13024): Output pins are stuck at VCC or GND

热门文章

  1. 什么是EasyUI,如何使用EasyUI?--easyui的十二种用法
  2. 北京医保报销比例,范围
  3. php 微信公共平台开发
  4. 免费网站(视频,PPT,静态图片,动态图片,壁纸)
  5. aseprite手机版_Voxel像素画体素模型转拼豆图纸方法
  6. 英特尔芯片组系列 服务器,Intel 7系列芯片组正式发布 不同型号解析
  7. 账套恢复失败 文件服务器,用友T3恢复账套时提示:备份信息文件无效,恢复失败?...
  8. win10重装系统后无法联网
  9. 生僻字用计算机的歌词,生僻字歌词翻译成常用汉字 陈柯宇生僻字歌曲翻译谐音版...
  10. 关于扩散模型(Diffusion Models)中的P2-weighting使用防坑