У меня есть исходный код, который должен читать файл .dat.код находится в Matlab.Каждый раз, когда я пытаюсь прочитать файл .dat, я получаю сообщение об ошибке:
Это файл .dat: https://drive.google.com/file/d/1iQM4P__FQqLCvHHdvkLwbo-jhHNNRXAl/view
Ошибка при использовании нулей
Размер входных данных должен быть целыми числами.
Ошибка в readBasebandFile (строка 49)
hdrMat = нули (numFrames, NumHdrs);
function [ hdrMat, FrameMat ] = readBasebandFile( file )
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
NumHdrs = 6;
fid = fopen(file, 'rb');
if fid < 3
disp(['couldnt read file ' file]);
return
end
f = dir(file);
fsize = f.bytes;
% read first frame
ctr = 0;
hdrMat = [];
FrameMat = [];
while (1)
if feof(fid)
break
end
% read header
%frame counter
frameCtr = fread(fid, 1,'uint32');
numBins = fread(fid, 1,'uint32');
binLength = fread(fid, 1,'single');
% sampling frequency which defines the range resolution through
% binLength = C/Fs/2, where C is the speed of light in the medium.
Fs = fread(fid, 1,'single');
% carrier frequency
Fc = fread(fid, 1,'single');
RangeOffset = fread(fid, 1, 'single');
% check valid header read
if isempty(frameCtr) || isempty(numBins) || isempty(binLength) || isempty(Fs) ...
|| isempty(Fc) || isempty(RangeOffset)
break;
end
% read data
data = fread(fid, 2*numBins, 'single');
if ctr==0
% 2 because it's complex values and 4 because 'single' is 4 bytes.
numFrames = fsize / (4*(NumHdrs + 2*numBins));
hdrMat = zeros(numFrames, NumHdrs);
FrameMat = zeros(2*numBins, numFrames);
end
ctr = ctr + 1;
hdrMat(ctr,:) = [double(frameCtr) double(numBins) binLength Fs Fc
RangeOffset];
FrameMat(:,ctr) = data;
end
[n,m] = size(hdrMat);
disp([file ' read. NumFrames=' num2str(n)]);
fclose(fid);