请问怎样在matlab中读取一个文件夹中的所有文件名 以filename开头的 .mat文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问怎样在matlab中读取一个文件夹中的所有文件名 以filename开头的 .mat文件相关的知识,希望对你有一定的参考价值。

例如:filename=apple_1
banana_1

文件夹中文件名是 apple_1_1_1.mat apple_1_2_1.mat banana_1_1_1.mat banana_1_2_1.mat
急求高手解答!!!

举个例:
dir_info = dir( 'D:\Program Files\Microsoft Visual Studio 8' )

dir_info =
26x1 struct array with fields:
name
date
bytes
isdir

你会得到一个n*1的结构体,每个结构体里通过isdir来判断这个项是文件还是文件夹,name存放着文件的完整路径。

>> [ m n q ] = fileparts( 'D:\Program Files\Microsoft Visual Studio 8\VSKnownIssues.htm' )
m =
D:\Program Files\Microsoft Visual Studio 8

n =
VSKnownIssues

q =
.htm

fileparts这个函数是用来分解文件路径的,第三个返回变量时后缀,接下来你应该知道该怎么做了吧追问

你的方法分解了路径,文件名和文件格式,
我的问题里文件夹里的文件是apple_1_1_1这样的,要读是以apple_1开头的文件,相当是读还有关键字的文件,然后记录完整的文件名,

参考技术A 用load来读取文件啊追问

关键是文件名,实际上是只取含有关键字的的文件的文件名

追答

你可以先用JAVA 写程序列出所有有关键字的文件的文件名,然后再黏贴到matlab里读取。

追问

要求是要用matlab的,不准我用其他编程语言........

怎样用matlab分割音频文件(wav)或其他

不要讲其他软件,就matlab
现在work文件夹下有文件test.wav
截取10s到20s
麻烦写出全部代码

huxuec的可以
请问能不能切割mp3

用matlab根据lrc文件切割音频,适用于wav音频(一句歌词一个音频一个lrc)代码如下:

%clear 
clc;clear all;
%用Import Data导入lrc文件,设置‘[’,\']\',\':\'为分隔符,出现三个矩阵,分别改名为minuate、second、lyric

[y,fs]=audioread(\'John Lennon - Oh My Love.wav\');%根据歌曲名修改

for i=6:36 %根据歌词导出矩阵小修

    min_start=minuate((i-1),1);

    min_end=minuate(i,1);

    sec_start=second((i-1),1);

    sec_end=second(i,1);

    time_start=min_start*60+sec_start;

     time_end=min_end*60+sec_end;

    Y2=y(((fs*time_start+1):fs*time_end),:); %根据lrc的时间剪切音频

    Filename=sprintf(\'song%d.wav\',i);%为音频命名

    audiowrite(Filename,Y2,fs);%写出音频

    lrc_name=sprintf(\'song%d.lrc\',i);%对应音频,为lrc命名

    fic=fopen(lrc_name,\'a+\');%对应音频,创建lrc

    fprintf(fic,\'[00:00.00]\')

    fprintf(fic,\'%s\',lyrici-1,1)%写入带时间轴歌词

    fclose(fic)%关闭lrc

end
参考技术A wavread函数可读入一个wav文件,如果为单声道就返回一个一维矩阵,表示每个采样点的量化值。如下:
[Y,FS,NBITS]=wavread(FILE)
Y为数据矩阵,FS为采样率,NBITS为量化位数,FILE为音频文件名。
如果你要截取[t1,t2]时间内的音频,

start=floor(t1*FS)+1;
end=floor(t2*FS);
R=Y[start:end];%R为截取后的数据
最后用函数wavwrite保存成新的wav文件,如
wavwrite(R,FS,NBITS,'new.wave') ;
参考技术B [Y,F,b]=wavread('test.wav');
Y2=Y(((F*10+1):F*20),:);
wavwrite(Y2,F,b,'test_new.wav') ;本回答被提问者采纳
参考技术C

浮云音频降噪软件好用,分割音频,合成音频,还能降噪音频。操作简单。

把音频发送到电脑桌面上,然后打开它,在其界面可以看到它有音频降噪、视频降噪、提高音量等功能,在上方最右侧的是分割音频和合成音频按钮。这就是我们今天展示的重点。

点击分割音频,然后弹出一个界面,界面显示添加音频,选择分割时间点,有三种方式,第一种是半小时一段、第二种是一小时一段、第三种是自定义时间点。

鉴于我们是十个小时的音频想要分成十段,也就是说分割成一小时一段,那我们直接选择一小时一段就可以了。接下来,点击开始分割,然后就可以看到分割正在进行中,进度不断变化,当进度显示100%的时候,分割音频就完成了。


最后点击保存结果,为分割后的结果保存一个位置就可以了。

如果说想把十个小时音频分割成二十段呢,那就选择半小时一段就可以了。如果想把音频分割成两段呢,那就需要选择自定义时间点,输入时间点为05:00:00。也就是五个小时一段。

怎么样,简单吗?

参考技术D 太专业了。有其他的为什么不用。。用这。。

以上是关于请问怎样在matlab中读取一个文件夹中的所有文件名 以filename开头的 .mat文件的主要内容,如果未能解决你的问题,请参考以下文章

matlab中怎样读取一个文件夹里面的指定类型的所有文件的名称?

matlab中怎样读取结构体某字段

怎样用matlab分割音频文件(wav)或其他

matlab怎样按列读取txt中的数据到数组啊

matlab中怎样批量处理文件?

请问MATLAB中的sparse函数怎样使用?