【发布时间】:2025-11-09 00:00:01
【问题描述】:
我希望在不先保存文件的情况下从 .dat 文件中读取一些数据。为此,我的代码如下所示:
urlsearch= 'http://minorplanetcenter.net/db_search/show_object?utf8=&object_id=2005+PM';
url= 'http://minorplanetcenter.net/tmp/2005_PM.dat';
urlmidstep=urlread(urlsearch);
urldata=urlread(url);
received= textscan(urldata , '%5s %7s %1s %1s %1s %17s %12s %12s %9s %6s %6s %3s ' ,'delimiter', '', 'whitespace', '');
data_received = received{:}
urlmidstep 的功能只是进行“搜索”,以便能够创建临时 .dat 文件。然后将此数据存储在urldata 中,这是一个长字符数组。然后,当我在 MATLAB 中使用 textscan 时,我会根据需要得到 12 列,它们存储在单元格数组 data_received 中。
但是,在 Octave 中,我收到各种警告消息:warning: strread: field width '%5s' (fmt spec # 1) extends beyond actual word limit(针对各种字段宽度)。我的问题是,为什么我在 Octave 中的结果不同,我该如何解决这个问题? Octave 的行为不应该与 MATLAB 相同,因为理论上任何差异都应该作为错误处理?
确定指定字符串的宽度并将分隔符和空格输入参数都留空应该告诉函数只处理字符串的宽度,允许空格是有效字符。
任何帮助将不胜感激。
【问题讨论】:
标签: string matlab octave delimiter textscan