使用for循环将数据读取到matlab

时间:2016-05-08 04:18:50

标签: matlab for-loop

我想在一些变量中将大小约为60 MB的文件的数据读入matlab,但是我得到了错误。这是我的代码:

    clear all ;
    clc ;
    % Reading Input File
    Dataz = importdata('leak0.lis');
    %Dataz = load('leak0.lis');

    for k = 1:1370
foundPosition = 1 ;
for i=1:size(Dataz,1)
    strp = sprintf('I%dz=',k);
    fprintf(strp);
    findValue = strfind(Dataz{i}, strp) ;
    if ~isempty(findValue)
        eval_param = strp + '(foundPosition) = sscanf(Dataz{i},''%*c%*c%*f%*c%*c%f'') ;';
        disp(eval_param);
        % str(foundPosition) = sscanf(Dataz{i},'%*c%*c%*f%*c%*c%f') ;
        eval(eval_param);
        foundPosition = foundPosition + 1 ;
    end
end
end

当我调试它时,我发现dataz是空的&所以它不会进入下一行。我用fopen,load&等,但它没有用。

1 个答案:

答案 0 :(得分:0)

From the Matlab help files,导入数据可能会失败,因为它无法理解您的文件格式。
来自帮助文件

  

要导入的文件的名称和扩展名,指定为字符串。如果importdata识别文件扩展名,则它调用MATLAB辅助函数,该函数用于导入相关的文件格式(例如加载MAT文件或xlsread用于电子表格)。否则,importdata会将该文件解释为分隔的ASCII文件。

     

对于ASCII文件和电子表格,importdata期望找到数字   矩形数据(即矩阵)。文本标题可以   出现在数字数据的上方或左侧,如下所示:

假设您的.lis文件实际上已分隔文本。 您应该在 importdata 调用中调整分隔符,以便Matlab可以理解您的文件。

filename = 'myfile01.txt';
delimiterIn = ' ';
headerlinesIn = 1;
A = importdata(filename,delimiterIn,headerlinesIn);