⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 freqoffset.m

📁 频率恢复的matlab实现方法
💻 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 + -