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

📄 chk_parameters.m

📁 国外大学的同志作出来的好程序
💻 M
字号:
function [sim, err]=chk_parameters(sim);
%check parameters after setting:

err=0;
if ~sim.sampling_rate | ~sim.carrier_freq | ~sim.symbol_rate ...
        | ~sim.bandwidth,
    disp('[chk_parameters]Error:sampling_rate, carrier_freq, symbol_rate or bandwidth cannot be zeros.')
    err=-1;
    return;
end
if sim.sampling_rate<2*sim.carrier_freq,
    disp('[chk_parameters]Error:sampling_rate is less than Nyquist frequency.');err=-1; return;
end
if sim.carrier_freq<sim.symbol_rate,
    disp('[chk_parameters]Error:carrier_freq is less than symbol rate.');err=-1; return;
end
if sim.bandwidth<0.5*sim.symbol_rate,
    disp('[chk_parameters]Warning:bandwith is less than half of the symbol rate.');err=err+1;
end


ipoints=sim.sampling_rate/sim.symbol_rate;
if ipoints~=fix(ipoints),
    disp('[chk_parameters]Error: Fractional sampling_rate/symbol_rate is not supportted');
    err=-1;
    return;
end

if sim.packet_time==0 && ~strcmp(lower(sim.packet_type), 'ofdm'),
    sim.packet_time=sim.blank_time+sim.lfm_time+sim.preamble_time+sim.frame_time*sim.frame_num;
    if sim.frame_num==0,
        disp('[chk_parameters]Error: frame_num and packet_time are both zeros.')
        err=-1;
        return;
    end
end
if sim.frame_num==0 && sim.packet_time~=0 && ~strcmp(lower(sim.packet_type), 'ofdm'),
    sim.frame_num=round((sim.packet_time-sim.blank_time-sim.lfm_time-sim.preamble_time)/sim.frame_time);
    sim.packet_time=sim.blank_time+sim.lfm_time+sim.preamble_time+sim.frame_time*sim.frame_num;
    disp('[chk_parameters]Info: frame_num and packet_time have been adjusted.')
end

if sim.frame_num<=0 && ~strcmp(lower(sim.packet_type), 'ofdm'),
    disp('[chk_parameters]Error: frame_num should be greater than zero.');err=-1; return;
end

if strcmp(lower(sim.appendix_type), 'prefix'),
    if sim.appendix_time~=sim.prefix_time & sim.appendix_time~=0,
        disp('[chk_parameters]Warning: appendix_time~=prefix_time.');
        err=err+1;
    end
    sim.appendix_time=sim.prefix_time;
end

if sim.prefix_time+sim.appendix_time>sim.frame_time && ~strcmp(lower(sim.packet_type), 'ofdm')
    disp('[chk_parameters]Error: prefix_time+appendix_time>frame_time')
    err=-1;
    return;
end

if sim.prefix_time+sim.appendix_time>0.8*sim.frame_time;
    disp('[chk_parameters]Warning: prefix_time+appendix_time>0.8frame_time')
    err=err+1;
end

if sim.frame_data_time==0 && ~strcmp(lower(sim.packet_type), 'ofdm'),
    sim.frame_data_time=sim.frame_time-sim.prefix_time-sim.appendix_time;
elseif sim.frame_data_time~=sim.frame_time-sim.prefix_time-sim.appendix_time && ~strcmp(lower(sim.packet_type), 'ofdm'),
    disp('[chk_parameters]Error: frame_time-prefix_time-appendix_time~=frame_data_time.')
    err=-1;
    return;
end

%update the sim.frame_data_len %will update again for OFDM
sim.frame_data_len=round(sim.frame_data_time*sim.symbol_rate);

if sim.ps_alpha>1
    disp('[chk_parameters]Error: ps_alpha>1');
    err=-1;
    return;
end

if sim.tx_num==0,
    sim.tx_num=1;
end
if sim.tx_num==1,
    sim.multiplex_type='';
    sim.multiplex_outvec=[];
elseif sim.tx_num>1,
    isempty(sim.multiplex_type);
    sim.multiple_outvec=[1: tx_num];
end

%set some default values.
if isempty(sim.packet_type),
    sim.packet_type='sc';
end
if isempty(sim.pulse_shaping_type),
    sim.pulse_shaping_type='sqrt';
    sim.ps_alpha=.5000;
    sim.ps_grp_delay=5;
end
if isempty(sim.mapping_msb),
    sim.mapping_msb='msb_first';
end


%check some nessary values.
if isempty(sim.coding_type)
    disp('[chk_parameters]Info: no coding_type specified.');
    sim.coding_rate=1;
end
if isempty(sim.mapping_type)
    disp('[chk_parameters]Error: no mapping_type.');
    err=-1; return;
end

sim.mapping_rate=constell_mapping_rate(sim.mapping_type);
if strcmp(lower(sim.coding_type), '802_15_3_tcm'),
    if sim.mapping_rate==2 | sim.mapping_rate==4 | sim.mapping_rate==5 | sim.mapping_rate==6,
        sim.n_k=[sim.mapping_rate sim.mapping_rate-1];
        sim.coding_rate=sim.n_k(2)/sim.n_k(1);
        sim.coding_reg_num=3;
    else
        disp('[chk_parameters]Error: 802_15_3_tcm for other than (qpsk/qam16/qam32/qam64) are not supported.')
    end
end
if sim.coding_rate==0,
    disp('[chk_parameters]Error: coding_rate is zero.');
    err=-1; return;
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -