如何从双倍数据中获取数据? MATLAB

时间:2014-05-30 10:18:12

标签: matlab loops double

昨天我使用了一些对我来说完美无缺的代码,今天我尝试使用它并且它没有像以前那样做同样的工作。我不确定为什么在再次运行之前我没有做任何改动 代码是:

[FileName,PathName,FilterIndex] = uigetfile('*.txt*','MultiSelect','on');

numfiles = size(FileName,2);

for ii = 1:numfiles
    FileName{ii};

    entirefile =fullfile(PathName,FileName{ii});

    fid = fopen(entirefile);

    tline = fgets(fid);
    while ischar(tline)

        parts = textscan(tline, '%f;');

        if numel(parts{1}) > 0
            A = [ A ; parts{:}' ];
        end
        tline = fgets(fid);
    end

    fclose(fid);

end  

B = A(1:end)

昨天我使用它时,B = A(1:end)显示了我希望上传文件的所有数据,但现在它以二进制形式显示数据,例如:

[ 1x11 double]
[ 1x11 double]
[ 1x11 double]
[ 1x11 double]
[ 1x11 double]
[ 1x11 double]
[ 1x11 double]
[ 1x11 double]
[ 1x11 double]
[ 1x11 double]
[ 1x11 double]
[ 1x11 double]   

以下是txt文件的示例:

  

dark_compensate; 1个
  dark_compensate_value_1; 0
  dark_compensate_value_2; 0
  dark_compensate_value_3; 0
  monitor pixel_0; 0
  监视pixel_1; 0
  监视pixel_2; 0
  监视pixel_3; 0
  监视pixel_4; 0
  监视pixel_5; 0
  vertical_select_flag; 0
  vertical_line3; 63
  vertical_line4; 63
  vertical_line3_wv; 390
  vertical_line4_wv; 390
  vertical_line_flag; 0
  vertical_line_ratio; 0
  laser_wavelength; 0
  laser_powerlevel; 0
  overlay_js; 0
  相对强度校正标志; 0
  像素;波长;波数;拉曼位移;黑暗;参考;原始数据#1;暗消减#1;%TR#1;吸光度#1;辐照度(流明)#1;
  0; 165.98; 60247.73; -60247.73; 0.0000; 65535.0000; 1542.0000; 256.7222; 0.0000; 0.0000; 0.0000;   1; 166.38; 60103.59; -60103.59; 0.0000; 65535.0000; 1027.0000; -258.2778; 0.0000; 0.0000; 0.0000;   2; 166.78; 59960.14; -59960.14; 0.0000; 65535.0000; 357.0000; -928.2778; 0.0000; 0.0000; 0.0000;   3; 167.18; 59817.38; -59817.38; 0.0000; 65535.0000; 1281.0000; -4.2778; 0.0000; 0.0000; 0.0000;   4; 167.57; 59675.31; -59675.31; 0.0000; 65535.0000; 1229.0000; -56.2778; 0.0000; 0.0000; 0.0000;   5; 167.97; 59533.90; -59533.90; 0.0000; 65535.0000; 1210.0000; -75.2778; 0.0000; 0.0000; 0.0000;   6; 168.37; 59393.17; -59393.17; 0.0000; 65535.0000; 1235.0000; -50.2778; 0.0000; 0.0000; 0.0000;   7; 168.77; 59253.11; -59253.11; 0.0000; 65535.0000; 1274.0000; -11.2778; 0.0000; 0.0000; 0.0000;   8; 169.17; 59113.71; -59113.71; 0.0000; 65535.0000; 1265.0000; -20.2778; 0.0000; 0.0000; 0.0000;   9; 169.56; 58974.97; -58974.97; 0.0000; 65535.0000; 1198.0000; -87.2778; 0.0000; 0.0000; 0.0000;   10; 169.96; 58836.88; -58836.88; 0.0000; 65535.0000; 1276.0000; -9.2778; 0.0000; 0.0000; 0.0000;   11; 170.36; 58699.44; -58699.44; 0.0000; 65535.0000; 1285.0000; -0.2778; 0.0000; 0.0000; 0.0000;

循环有效,只能从文件中导入数字数据 任何人都可以建议为什么会出现这种情况?或者如何从[ 1x11 double]获取数据?

1 个答案:

答案 0 :(得分:0)

我想我已经找到了你的问题。问题在于%f这一行:

parts = textscan(tline, '%f;');

如文档here所示,您只需提取双格式数据。将%f更改为%s,您应该感觉良好。