Matlab中dir使用中遇到的一些问题
今天调程序时遇到一个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使用中遇到的一些问题相关推荐
- Matlab中dir命令
Matlab使用dir函数获得指定文件夹下的所有子文件夹和文件,并存放在在一种为文件结构体数组中. dir函数可以有调用方式为: dir('.')列出当前目录下所有子文件夹和文件 dir('G:\Ma ...
- Matlab中dir函数使用小技巧
想必很多小伙伴在matlab中对文件进行批处理时经常会使用dir函数吧,dir函数用于列出文件夹中的内容.使用语法如下: % Matlabdir % 列出当前文件夹中的文件和文件夹,当然调用方式也可以 ...
- matlab中dir代表什么意思,matlab中 sizes.DirFeedthrough 什么意思
s-function也就是system-function的缩写.说得简单,s-function就是用MATLAB所提供的模型不能完全满足用户,而提供给用户自己编写程序来满足自己要求模型的接口.要了解 ...
- matlab中facedetector,Matlab人脸检测方法(Face Parts Detection)详解
今天同学让我帮忙制作一个人脸表情识别的样本库,其中主要是对人脸进行裁剪,这里用到了一个相对较新的Matlab人脸检测方法Face Parts Detection,网上百度了一下发现关于Matlab人脸 ...
- matlab 中的dir函数使用
Matlab使用dir函数获得指定文件夹下的所有子文件夹和文件,并存放在在一种为文件结构体数组中. dir函数可以有调用方式为: dir('.')列出当前目录下所有子文件夹和文件 dir('G ...
- matlab dir datenum,matlab中的datenum
matlab中的datenum,根据输入参数返回相应日期时间的时间数值. 天为整数,若出现一天中的小时,则在当天0时的基础上加上n/24. 比较好玩的是时间数值0代表的是00-Jan-0000,即00 ...
- matlab中help所有函数功能的英文翻译
doc funname 在帮助浏览器中打开帮助文档 help funname 在命令窗口打开帮助文档 helpbrowser 直接打开帮助浏览器 lookfor funname 搜索某个关键字相关函数 ...
- matlab中读文件的行数_[转载]MATLAB中获取大型文本文件行数方法研究(转)
在工作中会有很多特殊的需要,比如我现在就遇到一个需要将大型的文本格式数据文件(比如5G)读取到MATLAB中,同时进行一定的处理.由于XP的内存是绝对没有办法将5G的数据一次性加载到工作空间的,此时一 ...
- matlab中fdyn,Matlab的用法总结
1. 对序列进行洗牌 randperm() randperm()产生随机的序列 %if filepaths 是一个5*1的结构体,then cshuffle = randperm(length(fil ...
- Matlab中的一些小技巧
转自:http://blog.chinaunix.net/uid-20551209-id-3202608.html 1.. Ctrl+C 中断正在执行的操作 如果程序不小心进入死循环,或者计算时间太长 ...
最新文章
- SQL Server查询重复数据
- 选好财务软件做好企业管理
- Linux的软件包封装格式有,linux软件安装包详解---全
- 构建Windows Server 2008虚拟实验室
- [机器学习-Sklearn]K-means(K均值)学习与总结
- 动手动脑java异常处理
- wpf tabitem 点击事件_Mindfusion教程:WPF中的Fishbone(Ishikawa)图
- 音视频开发(30)---新一代视频编码标准:HEVC、AVS2和AV1性能对比报告
- android 6.0 蓝牙进程,Android6.0-蓝牙权限问题
- 互联网域名解析系统DNS的工作原理及相关服务配置
- Kendo UI开发教程(25): 单页面应用(三) View
- figma客户端_小白的Figma入门手册
- 管理Active Directory的工具
- Kconfig Kbuild
- 完全删除conime.exe
- 大话西游2人数最多服务器,大话2大话各个服务器狂人榜排名 看大话如今服务器...
- 【FreeRTOS】FreeRTOS学习笔记(3)— FreeRTOS任务与协程
- 幼儿园保育员好吗 就业前景如何
- ​复盘共享经济2020:陷入艰难求生困境,转型能否拯救亏损怪圈
- FPGA问题记录之:Warning (13024): Output pins are stuck at VCC or GND
热门文章
- 什么是EasyUI,如何使用EasyUI?--easyui的十二种用法
- 北京医保报销比例,范围
- php 微信公共平台开发
- 免费网站(视频,PPT,静态图片,动态图片,壁纸)
- aseprite手机版_Voxel像素画体素模型转拼豆图纸方法
- 英特尔芯片组系列 服务器,Intel 7系列芯片组正式发布 不同型号解析
- 账套恢复失败 文件服务器,用友T3恢复账套时提示:备份信息文件无效,恢复失败?...
- win10重装系统后无法联网
- 生僻字用计算机的歌词,生僻字歌词翻译成常用汉字 陈柯宇生僻字歌曲翻译谐音版...
- 关于扩散模型(Diffusion Models)中的P2-weighting使用防坑