📄 freqoffset.m
字号:
function opfilename = freqoffset(ipfilename, carroff)% add carrier frequency offset to a file of 'SYSCLK' sampled complex data%% opfilename = freqoffset(ipfilename, carroff)% ipfilename: input file (*.bce), output filename is ipfilename with 'no_' prepended% carroff: carrier offset in Hz% ---------------------------------------------------------------------------switch nargincase 2 % nullotherwise error('incorrect argument count');endglobal SYSCLK% open filesipfilename = setfiletype(ipfilename, 'bce');opfilename = ['fo_' ipfilename];opfilename = setfiletype(opfilename, 'bce');ipfid = fopen(ipfilename, 'r');if ipfid <= 0, error('unable to open source file'); endopfid = fopen(opfilename, 'w');if opfid <= 0 fclose(ipfid); error('unable to open the destination file')end% process data in memory in BlockSize size blocksBlockSize = 50E3;LastPhase = 0;%added by huanglou[IF_PID, msg] = fopen('IF_DATA', 'w');if (IF_PID == -1), error(msg); end% process until run out of file datawhile ~feof(ipfid) [data, datalen] = fread(ipfid, 2*BlockSize, 'float32'); if datalen ~= 0 datalen = datalen/2; % convert data to complex data = [ 1 1i ] * reshape(data, 2, datalen); % add the frequency shift LoscPhase = LastPhase + 2*pi*carroff*(1:datalen)/SYSCLK; LastPhase = mod(LoscPhase(end),2*pi); data=data.*exp(j*LoscPhase); % write out the result count = fwrite(opfid, [real(data);imag(data)], 'float32'); count_if= fwrite(IF_PID, [real(data);imag(data)], 'float32'); if count ~= 2*datalen error('unable to write data completely'); end endendfclose(IF_PID);fclose(ipfid);fclose(opfid);% ------------------------------------END------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -