【问题标题】:Convert all *.mat files in a directory to *.txt files?将目录中的所有 *.mat 文件转换为 *.txt 文件?
【发布时间】:2016-01-04 03:05:14
【问题描述】:

我想把一个目录下的所有 *.mat 文件转换成对应的 *.txt 文件 例如,输入:100.mat 输出:100.txt

我使用下面的代码,

files = dir(‘*.mat’);
for file = files'
    mat = load(file.name);
    % Do some stuff
    %Conten = who;
    save('file.txt', Conten{:}, '-ascii')
end

但它将所有行返回到一个大文本文件或仅返回最后一个文件的内容。我想将所有文件转换为具有相应文件名的 *.txt。

【问题讨论】:

  • 您的.mat 文件是否包含cellarray 和/或struct 类型的变量?

标签: macos matlab text directory


【解决方案1】:

一些基本错误..... 注意保存功能,如您指定的那样:

save('file.txt', Conten{:}, '-ascii')

它表示将所有内容保存到file.txt中。因为你得到那个结果。 为了保存到不同的文件,您需要每次生成文件名。

something like these:
files = dir('*.mat');
for file = files'
    mat = load(file.name);
    % Do some stuff;
    %Conten = who;
    save(strcat(file.name, '.txt'), Conten{:}, '-ascii');
end

【讨论】:

  • 如果“.mat”文件包含cellarraystruct 变量,您不能简单地将它们保存到带有save 的ASCII 文件中,因为它不支持该数据类型。
  • 虽然这是真的,但我认为他已经成功保存了文本(也许?),所以我给出了这个答案。更重要的是,如果有 cellarray 或 struct 之类的东西,应该在 % Do some stuff; %内容=谁;并转换成合适的字符串。
【解决方案2】:
files = dir('*.mat');
for file = 1:files
    mat = load(files(file).name);
    % Do some stuff
    %Conten = who;
    F_current=files(file).name
    F_name = strcat(a1(1:end-3),'txt')
    save(F_name, Conten{:}, '-ascii')
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    相关资源
    最近更新 更多