How do I import and read a large binary file?
13 次查看(过去 30 天)
显示 更早的评论
I have a 1.5GB binary file that was created via recording in GNURadio with an SDR. GNURadio documentation says this is a "pure" binary file and consists of 32 bits for the real part followed by 32 for the imaginary (complex float). My intent is to use fread if I can get the file opened.
Upon trying to open the file using uiimport MATLAB hangs with "opening a large text file" message and eventually errors with "out of memory". Machine has 16GB of RAM and there are no other significant processes running.
I only need a second or two of this data (if that) it's a BPSK signal and I'd like to be able to visualize the modulation.
I'm very new to MATLAB, using R2018. Thanks for any help!
1 个评论
Rik
2019-1-13
If you only need a small portion, it might be better to avoid 'smarter' tools like uiimport, and use fopen and fscanf to read your data.
采纳的回答
Walter Roberson
2019-1-14
filename = 'MySDRFile.bin'; %as appropriate
seconds_to_read = 1;
%{
Fs = 997990000*2; %sampling frequency... needed to know how much "one second" is.
%99.8 MHz is the middle of the FM band
%}
Fs = 1E6*2; %1 megabit/s data rate for basic DPSK ?
samples_to_read = floor(seconds_to_read * Fs);
filename = 'MySDRFile.bin'; %as appropriate
[fid, msg] = fopen(filename, 'r');
if fid < 0
error('Failed to open file "%s" because "%s"', filename, msg);
end
%data is interleaved real then complex. When we fread into two rows
%then the top row becomes the reals and the bottom row becomes the imag
data = fread(fid, [2 samples_to_read], '*float32');
fclose(fid);
%reformulate as complex
data = complex(data(1, :), data(2,:));
2 个评论
Guillaume Baptist
2022-9-28
编辑:Guillaume Baptist
2022-9-28
Yes, it also works well for me. Thanks. For those who don't need the imaginary part and want to plot only the real part, I simply did :
plot(real(data));
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 BPSK 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!