【问题标题】:usage of textscan in Octave 3.8.2在 Octave 3.8.2 中使用 textscan
【发布时间】:2015-06-18 03:18:54
【问题描述】:

matlab中读取“1.2D+02 3.23D+01 ....”的数据文件时,以下工作正常;

tempvs = textscan ( input_unit, '%f', N );
tempvs = cell2mat(tempvs);
tempvs = double(tempvs); 

但是,在八度音阶(版本 3.8.2)中同样不起作用(不识别“D”数字),所以我进行了如下修改;

tempvs = textscan ( input_unit, '%s', N );
tempvs = cell2mat(tempvs);
values = zeros(N,1);
for i = 1: N
   values(i) = str2num(tempvs{i,1});
end

还有其他有效的方法来完成这项工作吗? 提前感谢您的帮助。

注意:将数据文件更改为“1.2E+02 3.23E+01 ....”形式不是一种选择,已逐行尝试使用 fgetl 读取,但速度很慢。

【问题讨论】:

    标签: matlab octave textscan


    【解决方案1】:

    fopen 文件,一次读取所有fread(fid, "char=>char").' 并尝试textscan ( regexprep(input_unit,"D","E"), '%f' ),当您的文件看起来到处都是input_unit="1.2D+02 3.23D+01"。只要您的文件适合您的 RAM,这应该会非常快。但我不知道D 的数字是什么?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多