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

Matlab中如何将文本文件每行字符串读取为独立数组元素

解决Matlab读取每行字符串到独立数组元素的问题

我完全懂你现在的困扰——明明文本文件里每行一个情绪字符串,结果读进来全揉成了一个长字符串塞在单个数组元素里,根本没法按单个情绪来处理对吧?咱们来调整下代码,轻松搞定这个问题。

方法1:用readlines(Matlab R2020b及以后版本,最简洁)

如果你的Matlab版本比较新,直接用readlines就完事了,它会自动把文件的每一行作为字符串数组的独立元素:

% 不需要手动打开文件也可以,readlines会自动处理
emotionArray = readlines('emotion_labels.txt');

要是你习惯手动管理文件句柄,也可以这么写:

emotionFile = fopen('emotion_labels.txt', 'r');
emotionArray = readlines(emotionFile);
fclose(emotionFile);

方法2:用textread(兼容旧版本Matlab)

如果你的Matlab版本比较老,textread是个靠谱的选择,它会返回一个cell数组,每个元素对应文件的一行:

% %s表示读取字符串,textread会自动按行拆分
emotionArray = textread('emotion_labels.txt', '%s');

这个方法不需要手动打开和关闭文件,textread会帮你处理这些细节。

方法3:用fgetl循环读取(手动控制,适合需要额外处理的场景)

要是你需要在读取每行的时候做一些额外操作(比如过滤空行、清理空格),可以用fgetl逐行读取并构建数组:

emotionFile = fopen('emotion_labels.txt', 'r');
emotionArray = {}; % 初始化一个空的cell数组
currentLine = fgetl(emotionFile);

% 循环读取直到文件结束(fgetl会返回-1表示到末尾)
while ischar(currentLine)
    % 把当前行添加到数组末尾
    emotionArray{end+1} = currentLine;
    currentLine = fgetl(emotionFile);
end

fclose(emotionFile);

为什么原来的代码会出错?

你之前的代码应该是用了类似fread的方式把整个文件的内容一次性读成了一个字符数组,没有按行拆分,所以所有字符串都连在一起了。上面的三种方法都是专门针对按行读取字符串设计的,完美解决这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:46:59