Arrays MATLAB为while循环预分配空间

Arrays MATLAB为while循环预分配空间,arrays,matlab,loops,memory,Arrays,Matlab,Loops,Memory,我一直无法找到足够的例子来帮助我解决为循环预分配空间的问题 我的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 但是

我一直无法找到足够的例子来帮助我解决为循环预分配空间的问题

我的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 = [Pressure;Pressure_Data];
Time = [Time;Time_Data];
实际需要的是将当前值写入数组中的正确位置。这是由

Pressure(2*ii-1 : 2*ii) = Pressure_Data;
Time(8*ii-7 : 8*ii) = Time_Data;
索引由以下内容组成:在第一次迭代(
ii=1
)中,我们写入
压力(1:2)
时间(1:8)
。在第二次迭代(
ii=2
)中,我们写入
压力(3:4)
时间(9:16)
,依此类推

另一个小输入:当您让
ii
从1变为20000时,您还可以使用for循环:

for ii=1:20000
    Pressure(2*ii-1 : 2*ii) = fread(fileID, 2);
    Time(8*ii-7 : 8*ii) = fread(fileID, 8);
end

当前压力值和时间值将附加到现有阵列:

Pressure = [Pressure;Pressure_Data];
Time = [Time;Time_Data];
实际需要的是将当前值写入数组中的正确位置。这是由

Pressure(2*ii-1 : 2*ii) = Pressure_Data;
Time(8*ii-7 : 8*ii) = Time_Data;
索引由以下内容组成:在第一次迭代(
ii=1
)中,我们写入
压力(1:2)
时间(1:8)
。在第二次迭代(
ii=2
)中,我们写入
压力(3:4)
时间(9:16)
,依此类推

另一个小输入:当您让
ii
从1变为20000时,您还可以使用for循环:

for ii=1:20000
    Pressure(2*ii-1 : 2*ii) = fread(fileID, 2);
    Time(8*ii-7 : 8*ii) = fread(fileID, 8);
end

除了变量jj之外,循环内部发生了什么变化?@freude the
fread
从文件
fileID
读取更多信息。嗯,从数据文件中读取2个字节,然后再读取8个字节,并重复此操作,直到达到规定的“20000”数字。所以每次读取2个字节和8个字节时,会产生不同的结果。。。。或者正如@Shai刚刚提到的:)除了变量jj之外,循环内部发生了什么变化?@freude the
fread
从文件
fileID
读取更多信息。嗯,从数据文件中读取2个字节,然后再读取8个字节,并重复该操作,直到达到规定的“20000”数字。所以每次读取2个字节和8个字节时,会产生不同的结果。。。。或者正如@Shai刚才提到的:)