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

如何在Octave中读取带表头、维度未知的TXT矩阵文件 Matlab的readmatrix不适用

Octave读取带注释头的TXT矩阵数据解决方案

方法1:直接用内置dlmread函数(仅读取数据矩阵,最简方案)

Octave内置的dlmread支持自动跳过指定字符开头的注释行,你的文件注释都是#开头,直接用以下一行代码即可读取全部数字矩阵,无需提前知晓维度:

# 空格为分隔符,#开头的行全部自动跳过
data = dlmread("你的文件路径.txt", " ", 0, 0, "commentstyle", "shell");

参数说明:

  • 第二个参数" "表示分隔符为空格,适配你给出的文件格式
  • commentstyle设为shell即默认把#开头的行识别为注释跳过

方法2:自定义读取逻辑(同时提取头部注释信息+数据矩阵)

如果需要保留开头的时间戳、变量名等注释内容,可使用自定义读取流程:

fid = fopen("你的文件路径.txt", "r");
if fid < 0
    error("文件打开失败,请检查路径");
end

header = {};
line = fgetl(fid);
# 循环读取所有#开头的注释行存入header
while startsWith(line, "#")
    header{end+1} = line;
    line = fgetl(fid);
end

# 把读到的第一行非注释行放回流中,方便后续统一读取
fseek(fid, -length(line)-1, "cof");

# 读取剩下所有数字为矩阵
data = dlmread(fid, " ");

fclose(fid);

# 注释内容可从header变量获取:
# header{1} 为时间戳行
# header{2} 为变量名行

如果使用的Octave版本不支持startsWith函数,可将判断条件替换为line(1) == "#"。

适配说明

以上两种方法均兼容你给出的两类文件格式:

  • 对于2列的时间电流数据,自动生成N行2列的矩阵
  • 对于多通道的27列传感器数据,自动生成N行27列的矩阵
    无需手动修改参数适配不同维度的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:42:03