【问题标题】:Read multiple files (wavread) [duplicate]读取多个文件(wavread)[重复]
【发布时间】:2016-04-01 17:58:44
【问题描述】:

我想从某个目录读取几个文件。这是我的脚本:

prefix = '\wav\';
wav_arr = ['1.wav'; '2.wav'; '3.wav'];
wav_arr = cellstr(wav_arr);

len = length(wav_arr);
sig = [];
fs = [];
for i = 1:len
    path = strcat(pwd, prefix, wav_arr(i));
    [s, curr_fs] = audioread(path);
    sig = [sig s];
    fs = [fs curr_fs];
end

但我收到错误:

Error using which
Argument must contain a string.

Error in audiovideo.internal.absolutePathForReading (line 7)
whichFileName = which(filename);

Error in audioread (line 74)
filename = audiovideo.internal.absolutePathForReading(...

Error in main_experiment (line 14)
    [s, curr_fs] = audioread(path);

问题是path1x1 cell,它不是string。并且为path 执行cellstr() 不起作用。

【问题讨论】:

  • path 是一个matlab函数,避免使用这个名字作为变量!

标签: matlab


【解决方案1】:
for i = 1:len
    path = strcat(pwd, prefix, wav_arr(i));
    [s, curr_fs] = audioread(path);
    sig = [sig s];
    fs = [fs curr_fs];
end

成为

for i = 1:len
    path = strcat(pwd, prefix, wav_arr{i});
    [s, curr_fs] = audioread(path);
    sig = [sig s];
    fs = [fs curr_fs];
end

就是这样,阅读有关 matlab 中单元格的文档以了解单元格 (1) 和单元格之间的区别{1}

【讨论】:

  • 而不是strcat(pwd, prefix, wav_arr{i}); 我建议使用fullfile(pwd, prefix, wav_arr{i});。恕我直言,意图更加清晰。此外,它允许使用prefix = 'wav' 而不必担心有正确的斜线。还按照您自己的建议将path 重命名为filename :)
猜你喜欢
  • 2019-01-07
  • 2019-12-24
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
相关资源
最近更新 更多