Effacer les filtres
Effacer les filtres

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

2 vues (au cours des 30 derniers jours)
Filip
Filip le 9 Mar 2017
Commenté : kevin sayed le 15 Mar 2021
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!

Réponse acceptée

Filip
Filip le 10 Mar 2017
Modifié(e) : Filip le 10 Mar 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 commentaire
kevin sayed
kevin sayed le 15 Mar 2021
did you have to transpose the data back after reading it to get the right matrix?

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by