Borrar filtros
Borrar filtros

appending matrices to binary file - recover with fread and reshape?

2 visualizaciones (últimos 30 días)
Hi!
I need some help on how to recover data from a binary file. I want to store a huge matrix by appending k 1000 x 9000 matrices to a binary file, but I don't know how to recover them in the right order after reading the file using fread and reshape. I want my big matrix to be of size k*1000 x 9000, i.e. the size when concatenating the matrices in the first dimension. Here is what I am doing in principle:
fid = fopen('binFile.bin','a');
for n = 1:k
data = rand(1000,9000);
fwrite(fid,data,'double');
end
bigData = fread(fid,[k*1000*9000],'double');
bigMatrix = reshape(bigData,[k*1000, 9000]);
Thankful for any pointers to solve this!

Respuesta aceptada

Filip
Filip el 10 de Mzo. de 2017
Editada: Filip el 10 de Mzo. de 2017
I figured it out myself:
By transposing the matrix before writing to file, the matrices are appended as expected. Here is the working script in case anyone else experience the same issue:
fid = fopen('binFile.bin','a');
for n = 1:k
someData = rand(1000,9000);
% transpose
data = someData';
fwrite(fid,data,'double');
end
% slurp up the file with fread
bigData = fread(fid,[k*1000*9000],'double');
% reshape
bigMatrix = reshape(bigData,[k*1000, 9000]);
  1 comentario
kevin sayed
kevin sayed el 15 de Mzo. de 2021
did you have to transpose the data back after reading it to get the right matrix?

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by