【发布时间】:2016-05-08 04:18:49
【问题描述】:
我想在某些变量中将大小约为 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 & 等替换了它,但是没有用。
【问题讨论】:
-
文件内容的格式是什么?
-
这是文件的 sn-p:*** monte carlo index = 1 *** i1z= -17.3439n i2z= -24.7754p
-
K 上没有 for 循环,我在 matlab 工作空间中得到了数据。我的意思是如果我对每个 k 都这样做,但问题是当我编写以下代码的 1370 次时,matlab 程序进入忙碌状态几个小时并且没有回答:foundPosition = 1;对于 i=1:size(Data,1) findValue = strfind(Data{i}, 'i11p=') ; if ~isempty(findValue) i11p(foundPosition) = sscanf(Data{i},'%*c%*c%*f%*c%*c%f') ;发现位置 = 发现位置 + 1 ;结束结束
-
所以导入数据适用于此,但是当数据很大时,不起作用