You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于MATLAB的一维CNN信号分类:.mat数据集构建及trainNetwork报错问题

解决MATLAB一维CNN信号数据集构建问题

我之前在做一维信号分类的CNN时踩过完全一样的坑——imageDatastore是专门为2D/3D图像设计的工具,强行用它加载一维n×1的.mat信号,会因为维度不匹配在trainNetwork阶段报错。下面是几种经过验证的解决方案:

方法1:使用arrayDatastore(推荐,MATLAB R2020b+)

arrayDatastore是MATLAB专门为数组型数据设计的数据存储类,完美适配一维信号场景,不需要强行模拟图像维度:

% 1. 获取所有.mat信号文件的路径
signalFolder = 'your_signal_directory'; % 替换为你的信号文件夹路径
fileList = dir(fullfile(signalFolder, '*.mat'));
filePaths = fullfile(signalFolder, {fileList.name});

% 2. 创建arrayDatastore,指定读取函数(假设每个.mat里存了名为signal的n×1数组)
ads = arrayDatastore(filePaths, 'ReadFcn', @(filePath) load(filePath).signal);

% 3. 绑定标签(如果需要)
% 假设标签存在一个和文件顺序对应的labels数组里(比如categorical类型)
labels = your_label_array; % 替换为你的标签数据
ds = combine(ads, arrayDatastore(labels));

% 4. 定义一维CNN的输入层(关键:输入维度设为[信号长度 1 1])
inputLayer = imageInputLayer([n 1 1], 'Name', 'input');
% 后续构建网络、调用trainNetwork即可直接使用ds

方法2:手动整理为标准CNN输入格式

如果你的MATLAB版本较低,不支持arrayDatastore,可以手动把所有信号整理成CNN能识别的维度格式(将一维信号转为[信号长度 1 1]的单通道"伪图像"):

signalFolder = 'your_signal_directory';
fileList = dir(fullfile(signalFolder, '*.mat'));
filePaths = fullfile(signalFolder, {fileList.name});

% 初始化存储变量
allSignals = [];
labels = [];
signalLength = n; % 替换为你的信号固定长度

for i = 1:length(filePaths)
    % 加载单个信号
    data = load(filePaths{i});
    singleSignal = data.signal;
    
    % 调整维度为[信号长度 1 1],匹配CNN输入要求
    formattedSignal = reshape(singleSignal, [signalLength 1 1]);
    allSignals = cat(4, allSignals, formattedSignal);
    
    % 提取标签(示例:从文件名提取,比如"classA_001.mat")
    [~, fileName, ~] = fileparts(filePaths{i});
    className = split(fileName, '_');
    labels = [labels, categorical(className{1})];
end

% 构建可用于trainNetwork的数据集
augDs = augmentedArrayDatastore([signalLength 1 1], allSignals, labels);

为什么imageDatastore会报错?

imageDatastore默认会将加载的内容解析为图像的H×W×C维度,你的n×1数组会被误判为1×n的单通道图像,而你的一维CNN输入层大概率设置的是[n 1 1],维度完全不匹配,最终导致trainNetwork无法处理输入数据。

内容的提问来源于stack exchange,提问作者Kaushik D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:42:06