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

Octave中如何调整EEG指标矩阵的展示格式?

修改Octave脚本实现EEG指标矩阵格式转换

原代码生成的是2×8×20×19的四维矩阵,我们需要将其重塑为二维矩阵,每行对应(epochs,电极)的8项指标,顺序为:按电极分组,每个电极下的20个epochs依次排列。

修改思路

核心通过Octave的维度调整与重塑函数实现:

  1. 用permute调整四维矩阵的维度顺序,将电极维度移至最前,随后是epochs维度,接着是患者维度,最后是指标维度,以此保证排列顺序符合需求。
  2. 用reshape将调整后的多维矩阵转为二维,每行对应一组(epochs,电极)的8项指标。

修改后的完整代码

close all;
clc;
pkg load image;
pkg load signal;

bestsize = 299900;
% 创建初始metrics矩阵
metrics = zeros(2,8,20,19); 

for i = 1:2
    filename = sprintf('sub%03d.csv', i ); 
    % 读取数据并移除首行首列
    patient = dlmread(filename,';',1,1);
    sizepat = size(patient,1);
    if sizepat <= bestsize
        % 补零至300000行
        patient0 = padarray(patient,[300000-sizepat,0],0,"post");
    else
        % 截断后补零至300000行
        patient0 = patient(1:bestsize, 1:19);
        patient0 = padarray(patient0,[100,0],0,"post");
    end
    % 重塑为epochs×采样点×电极的三维矩阵
    patient1 = reshape(patient0,20,15000,19);
    
    % 计算各项统计指标
    for j = 1:20
        for k = 1:19
            metrics(i,1,j,k) = max(patient1(:,j,k));     % 最大值
            metrics(i,2,j,k) = min(patient1(:,j,k));     % 最小值
            metrics(i,3,j,k) = mean(patient1(:,j,k));    % 均值
            metrics(i,4,j,k) = std(patient1(:,j,k));     % 标准差
            metrics(i,5,j,k) = var(patient1(:,j,k));     % 方差
            metrics(i,6,j,k) = kurtosis(patient1(:,j,k));% 峰度
            metrics(i,7,j,k) = skewness(patient1(:,j,k));% 偏度
            metrics(i,8,j,k) = peak2peak(patient1(:,j,k));% 峰峰值
        end
    end
end

% 格式转换核心代码
% 调整维度顺序:电极 -> epochs -> 患者 -> 指标
metrics_permuted = permute(metrics, [4, 3, 1, 2]);
% 重塑为二维矩阵:380行(19电极×20epochs),16列(2患者×8指标)
metrics_2d = reshape(metrics_permuted, [], 2*8);

% 替换原metrics变量(也可直接使用metrics_2d)
metrics = metrics_2d;

% 保存处理后的数据
save("metrics.mat","metrics");

关键代码说明

  • permute(metrics, [4, 3, 1, 2]):原矩阵维度顺序为[患者, 指标, epochs, 电极],调整后变为[电极, epochs, 患者, 指标],确保输出顺序是先遍历所有电极,每个电极下遍历所有epochs。
  • reshape(metrics_permuted, [], 2*8):[]让Octave自动计算行数(19×20=380),列数固定为16(每个患者对应8个指标列),最终每行对应一组(epochs,电极)的所有统计指标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:37:31