MATLAB读取非标准格式TXT文件并提取变量的方法
MATLAB读取非标准格式text_a2p.txt文件的实现方法
核心实现代码
% 打开文件,获取文件标识符 fid = fopen('text_a2p.txt', 'r'); if fid == -1 error('无法打开文件,请检查路径是否正确'); end % 初始化目标变量 object = ''; plane = ''; range = []; factor = []; coeff = []; % 逐行读取并处理内容 while ~feof(fid) line = fgetl(fid); isempty(line) && continue; % 跳过空行 % 拆分每行的标识词与对应数据 parts = strsplit(line); key = parts{1}; data = parts(2:end); switch lower(key) case 'object' object = data{1}; % 提取单个字符串 case 'plane' plane = data{1}; % 提取单个字符串 case 'range' range = str2double(data); % 转换为任意长度的数值数组 case 'factor' factor = str2double(data{1}); % 提取单个数值 case 'coeff' coeff = str2double(data); % 转换为任意长度的数值数组 otherwise warning('未知标识词:%s,已跳过该行', key); end end % 关闭文件 fclose(fid); % 可选:验证提取结果 disp(['object: ', object]); disp(['plane: ', plane]); disp(['range: ', num2str(range)]); disp(['factor: ', num2str(factor)]); disp(['coeff: ', num2str(coeff)]);
代码说明
- 文件校验:先判断文件是否成功打开,避免因路径错误或文件缺失导致的运行报错。
- 变量初始化:提前声明所有目标变量,避免MATLAB自动创建变量引发的潜在问题。
- 逐行处理逻辑:
- 用
fgetl逐行读取内容,跳过空行防止拆分出错。 - 通过
strsplit拆分每行,分离标识词与数据部分。 - 针对不同标识词做针对性处理:
object/plane直接取单个字符串;range/coeff自动适配任意数量的数值,转为数值数组;factor提取单个数值。
- 用
- 健壮性处理:遇到未知标识词时抛出警告并跳过该行,不影响整体流程。
额外注意
如果文件中存在重复的标识词(比如多次出现range),当前代码会用后读取的内容覆盖之前的结果。若需要保留所有重复项,可将对应变量改为二维数组存储,例如range = [range; str2double(data)]。
内容的提问来源于stack exchange,提问作者Bell
相关产品推荐
相关产品推荐

