【发布时间】:2015-10-07 08:17:33
【问题描述】:
我无法找到足够的示例来帮助我解决为循环预分配空间的问题。
我的 while 循环有以下代码:
Time = [];
Pressure = [];
ii = 1;
while ii<=20000
Pressure_Data = fread(fileID, 2);
Pressure = [Pressure;Pressure_Data];
Time_Data = fread(fileID, 8);
Time = [Time;Time_Data];
ii = ii + 1;
end
然后我在 Pressure_Data 和 Time-Data "Appears to change size on every loop iteration. Consider preallocating for speed." 下看到警告曲线
所以我想预先分配空间,因为目前读取文件和存储数据需要一些时间。
到目前为止我的尝试:
Time = zeros(160000,1);
Pressure = zeros(40000,1);
但是我只得到一个零数组,而不是我需要的读取和存储值
【问题讨论】:
-
除了变量 jj 之外,循环内部发生了什么变化?
-
@freude
fread从文件fileID中读取更多信息。 -
嗯嗯,从数据文件中读取 2 个字节,然后读取 8 个字节,并重复此操作,直到达到“20000”所述的数字。因此,每次读取 2 个字节和 8 个字节时,都会产生不同的结果......或者正如@Shai 刚刚提到的那样:)
标签: arrays matlab loops memory