凯斯西储大学轴承数据集批量处理方法

看前面关于CWRU数据的博客,大家讨论的如此热烈,这里我就再分享一个可以批量处理凯斯西储大学轴承数据的方法(MATLAB实现)!
经过整理,官网上的数据大概如下:
凯斯西储大学轴承数据集批量处理方法_第1张图片
其中每个文件夹均有各自状态下的数据集,如下:
凯斯西储大学轴承数据集批量处理方法_第2张图片
这里我们在MATLAB中随意打开一个文件康康它长什么样子。哦,大概是这个鬼样子
在这里插入图片描述
那么问题来了,如何仅仅提取我们需要的某一类数据呢?
好!如果你需要驱动端(DE)的数据,那你只需要X118_DE_time这个变量下的数据即可。
所以接下来就步入正题(前面也许是废话,凑字数)!
**整体思路如下:

  1. 首先把你的数据文件都放在同一文件夹下,然后读取该文件夹。
  2. 获取每一个文件的名字,并读取文件
  3. 获取文件中的变量名,并找到你想要的那个X118_DE_time
  4. 读取数据,写入新的文件**

啥也不说了,直接上代码

namelist = dir('文件夹位置\*.mat');  % 这里会返回name、date、bytes等参数
len = length(namelist);  % 得到共有多少个文件
for i = 1:len  % 依次加载文件
    file_name = namelist(i).name;  % 读取文件名
    route = '文件夹位置';
    file_route = strcat(route, file_name);  % 地址组合
    data = load(file_route);  % 加载文件
    fieldsname = fields(data); % 这里data是结构体变量,获取文件的结构体变量名
    for j = 1:length(fieldsname)  % 依次加载变量名
        % 将结构体成员由元胞数组转换成字符串格式
        var_name = cell2mat(fieldsname(j));
        if length(var_name) < 6  % 匹配后7位是否满足条件
            continue
        elseif (strcmp(var_name(end-6:end), 'DE_time'))  %根据变量名后几位匹配
            value = getfield(data,var_name);  % 读取满足条件的变量值
            suffix = char('.txt');
            % 将文件名和后缀组合起来
            new_file_name = strcat(file_name(1:end-4), suffix);
            new_file_route = strcat(route, new_file_name);
            dlmwrite(new_file_route,value,'newline','pc');  % 写入TXT文件
            break
        end
    end
end

好了,然后打开你的文件夹,一群热乎的数据就提取出来了!
这么详细的注释笔者怕不是个傻子,溜了
后续操作见:
https://blog.csdn.net/qq_41687512/article/details/102917300

你可能感兴趣的:(凯斯西储大学轴承数据集批量处理方法)