【问题标题】:Import block data of a text file in Matlab在 Matlab 中导入文本文件的块数据
【发布时间】:2020-11-22 08:16:41
【问题描述】:

假设我有一个名为“test.txt”的简单文本文件,格式如下

A=-1.1,2.2,-3.3,4.4B

我的目的是在 Matlab 中从文本文件。

我该怎么做?

Ps:注意数据在字符串“A=”和“B”之间,用逗号隔开。

我设法用下面的代码提取了第一个数据。

buffer = fileread('test.txt');
search = 'A=';
local = strfind(buffer, search);
value = sscanf(buffer(local(1,1)+numel(search):end), '%f', 1);

但是,我不确定如何从列表中获取以字符串 "B"

结尾的其他值

【问题讨论】:

  • 您是否在寻找类似textscan 的功能?它旨在处理具有特定格式的输入,例如那些。例如,您可以使用textscan(string,"%*c %*c %f %f %f %f %*c", 'delimiter', ',')
  • 我不知道如何放置分隔符,谢谢@mimocha

标签: matlab data-manipulation text-manipulation


【解决方案1】:

好吧,这是我的答案:

clear; clc

path = 'test.txt';
fileID = fopen(path, 'r');
A = fscanf(fileID, '%s');
splitStr = regexp(A, '[a-zA-Z]', 'split');
splitStr = regexp(splitStr, '=', 'split');
splitStr = regexp(splitStr{2}, ',', 'split');
disp(splitStr{2})
fclose(fileID);

输出:

'-1.1'    '2.2'    '-3.3'    '4.4'

【讨论】:

  • 虽然此代码可能会回答问题,但提供额外的上下文作为代码的 cmets 或作为关于它如何和/或为什么解决问题的单独段落将提高答案的长期价值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 2018-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-26
相关资源
最近更新 更多