皮皮网

【四度指标源码】【投票html源码】【两融源码】qammod()源码

2024-11-18 21:33:47 来源:波段出击主图源码

1.qammod函数作用
2.不同阶QAM调制星座图中,源码符号能量的源码归一化计算原理
3.(含matlab完整源码)手搓16QAM调制解调系统
4.Matlab产生QAM信号
5.求OFDM系统信道估计技术的MATLAB代码!

qammod()源码

qammod函数作用

       mod函数是源码一个用来求余数函数,返回两数相除的源码余数。

       mod函数在Excel中一般不单独使用,源码经常和其他函数组合起来使用。源码四度指标源码

       2.mod函数的源码语法格式=mod(number,divisor)=mod(被除数,除数)。源码我们经常使用的源码是能否被2整除,返回1和0两种值的源码特性。mod函数是源码一个求余函数,其格式为: mod(nExp1,源码nExp2),即是源码投票html源码两个数值表达式作除法运算后的余数。特别注意:在EXCEL中,源码MOD函数是源码用于返回两数相除的余数,返回结果的符号与除数(divisor)的符号相同。mod函数是一个求余函数,其格式为: mod(nExp1,nExp2),即是两个数值表达式作除法运算后的余数。那么:两个同号整数求余与你所知的两个正数求余完全一样(即两个负整数与两个正整数的算法一样),即两数取余后返回两数相除的余数。

不同阶QAM调制星座图中,符号能量的归一化计算原理

       在使用QAM调制的Matlab仿真过程中,一个常见的疑惑是关于二进制比特流如何映射到QAM符号上,尤其当涉及到不同阶数的两融源码QAM,如4QAM(QPSK)、QAM、QAM和QAM。在此,我们将探讨符号能量的归一化计算,这对于理解各阶QAM之间的关系至关重要。

       首先,对于QPSK(4QAM),其符号通常采用格雷编码。我们熟知QPSK符号的归一化过程是将每个符号(如1+1i)除以其能量,即[公式],这通常通过matlab的付费小说+源码qammod函数中的“UnitAveragePower”参数实现。然而,理解这个计算背后的原理有助于我们扩展到更高阶的QAM。

       QPSK符号的归一化能量计算基于其四种等概率出现的符号,每个符号的能量为[公式],平均能量为[公式]。为了将能量归一化到1,横纵坐标的幅值和相位均需除以[公式],结果是0. + 0.i等四个符号。

       对于QAM,其符号能量计算更为复杂,信号幅度和相位各有4种取值。每个符号的小米+rom源码能量和出现概率不同,总能量为[公式],归一化后每个符号的横纵坐标则除以[公式]。例如,一个符号可能为[公式]。

       对于QAM和QAM,计算方法类似,只是符号数量和能量取值会相应增加。在Matlab中,可以使用特定函数或参数(如Intger,k_4qam和'gray',以及'UnitAveragePower', true)来得到归一化后的符号。

       通过这些计算,我们可以直观地看到不同阶数QAM调制下,符号能量归一化后的表现形式。总的来说,理解并掌握这些计算原理,有助于我们在实际应用中更准确地处理和分析QAM调制的信号。

(含matlab完整源码)手搓QAM调制解调系统

       在通信领域,QAM调制方式在OFDM系统中广泛应用,因其先进的调制特性。为深入理解QAM系统运行机制,我在理论学习之余,决定自行使用MATLAB编程实现从头至尾的QAM调制解调系统,以获得更为直观的感受和体验。

       起初,我发现MATLAB库中提供了现成的qammod函数,使用几行代码即可轻松完成任务。然而,为了达到对系统运作过程的深入理解,我决定从零开始,亲手搭建QAM系统,从产生UNRZ波形、串并转换,到星座图映射、QAM调制,最终过AWGN信道并解调,每一步都通过figure展示码元波形及调制前后的星座图,以利于学习。

       整个MATLAB代码共行,详细内容请下拉查看。此项目旨在提供一个实用的参考案例,欢迎各位同行学习参考。

       在编程过程中,我参考了多本专业书籍和博客,并在此对各位前辈表示诚挚的感谢。相关资源链接如下:[1][2][3]。理论与实践相结合,方能深刻理解技术。希望此项目能对大家的学习和工作有所启发。

Matlab产生QAM信号

       通过Matlab内置函数“qammod”可以生成QAM信号,该方法简便快捷。

       QAM信号的频谱图与时域波形图如下展示,从图中可以看到信号的带宽和幅度特征。

       接着是QAM信号的频谱与语图,进一步展示了高阶QAM信号的复杂性与信息承载能力。

       最后是QAM信号的频谱与语图,这种高阶调制方式在信号处理中尤为关键,能够提供更高的数据传输速率。

       虽然我对QAM调制的理解尚浅,但通过实践和探索,我希望能更深入地理解其工作原理和应用。欢迎各位在技术领域中分享经验,共同探讨QAM信号的奥秘。

求OFDM系统信道估计技术的MATLAB代码!

       clear all;

       close all;

       clc;

       fprintf('OFDM信道估计仿真\n\n');

       num_sc = ; %-----------载波数目 简化为

       num_symbol = ; %--------------OFDM符号个数

       data_symbol = [0,1,2,4,5,6,7,8,9,,,];

       pilot_symbol = [3,];

       cp_len = [,,,,,,,,,,,,,];

       modulation_mode = ;%---------调制方式

       q = ;

       time_offset = 1; %us

       time_offset = ceil(time_offset * .); %M bandwidth

       SNR = 0:2:;%-------------信噪比取值

       num_loop = ;%-----------------循环次数

       num_ant = 2;

       num_bit_err=zeros(length(SNR),num_loop);

       num_bit_err_dft=zeros(length(SNR),num_loop);

       num_bit_err_ls=zeros(length(SNR),num_loop);

       MSE=zeros(length(SNR),num_loop);

       MSE1=zeros(length(SNR),num_loop);

       MSE2=zeros(length(SNR),num_loop);

       %%%%%%%%%%%%%%%%%%%%%%%Rx信号产生%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

       %---------------产生发送的随机序列————————————————————-

       BitsLen = num_sc * length(data_symbol);

       BitsTx = randint(1,BitsLen);

       %---------------符号调制---------------------------------------—————

       Modulated_Sequence=qammod(BitsTx,modulation_mode);

       %---------------产生导频序列---------------------------------------———

       prime_num = primes(num_sc);

       prime_num = max(prime_num);

       m = 0 : num_sc-1;

       xq = exp(-j*(pi*q*m.*(m+1)/prime_num));

       pilot_symbols = xq( mod(m, prime_num) +1 );

       pilot_symbols = pilot_symbols.';

       %----------------导频插入-------------------------------------——————

       piloted_ofdm_syms = zeros(num_sc, num_symbol);

       piloted_ofdm_syms(:, data_symbol + 1) = reshape(Modulated_Sequence, num_sc, length(data_symbol));

       piloted_ofdm_syms(:, pilot_symbol + 1) = repmat(pilot_symbols, 1, length(pilot_symbol));

       %----------------IFFT变换—————————————————————————

       time_signal = sqrt(num_sc) * ifft(piloted_ofdm_syms);

       %----------------加循环前缀------------------------------------—————

       Tx_data_trans = [];

       for k = 1 : num_symbol

        add_cyclic_signal = [time_signal(num_sc - cp_len(k)+1 : num_sc, k); time_signal(:, k)].';

        Tx_data_trans = [Tx_data_trans,add_cyclic_signal];

       end

       %%%%%%%%%%%%%%%%%%%%%%%主程序循环%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

       for c1 = 1:length(SNR)

        fprintf('\n\n\n仿真信噪比为%f\n\n',SNR(c1));

        for num1 = 1:num_loop

        %----------------信道处理--------------------------------------

        %ADD awgn

        Tx_signal_power = sum(abs(Tx_data_trans(:)).^2) / length(Tx_data_trans(:));

        noise_var = Tx_signal_power/(^(SNR(c1)/));

        Rx_data(1, :) = awgn(Tx_data_trans, SNR(c1), 'measured');

        Rx_data(2, :) = awgn(Tx_data_trans, SNR(c1), 'measured');

        %ADD TO 正时偏

        Rx_data(1, :) = [zeros(1,time_offset),Rx_data(1, 1:length(Tx_data_trans)-time_offset),];

        Rx_data(2, :) = [zeros(1,time_offset),Rx_data(2, 1:length(Tx_data_trans)-time_offset),];

       % %ADD TO 负时偏

       % Rx_data(1, :) = [Rx_data(1, time_offset+1:length(Tx_data_trans)),zeros(1,time_offset)];

       % Rx_data(2, :) = [Rx_data(2, time_offset+1:length(Tx_data_trans)),zeros(1,time_offset)];

        %----------------信号接收、去循环前缀、FFT变换-----------------

        %Ant0

        total_len=0;

        for k=1 : num_symbol

        Rx_signal_matrix(:, k) = Rx_data(1, total_len+cp_len(k)+1 : total_len+cp_len(k)+num_sc).';

        total_len = total_len+cp_len(k)+num_sc;

        end

        Rx_carriers_ant0 = fft(Rx_signal_matrix)/sqrt(num_sc);

        %Ant1

        total_len=0;

        for k=1 : num_symbol

        Rx_signal_matrix(:, k) = Rx_data(2, total_len+cp_len(k)+1 : total_len+cp_len(k)+num_sc).';

        total_len = total_len+cp_len(k)+num_sc;

        end

        Rx_carriers_ant1 = fft(Rx_signal_matrix)/sqrt(num_sc);

        %----------------导频和数据提取--------------------------------

        Rx_pilot_ant0 = Rx_carriers_ant0(:, pilot_symbol+1);

        Rx_data_ant0 = Rx_carriers_ant0(:, data_symbol+1);

        Rx_pilot_ant1 = Rx_carriers_ant1(:, pilot_symbol+1);

        Rx_data_ant1 = Rx_carriers_ant1(:, data_symbol+1);

        %----------------导频位置LS信道估计------------------------———

        pilot_patt = repmat(pilot_symbols, 1, length(pilot_symbol));

        pilot_esti_ant0 = Rx_pilot_ant0.*conj(pilot_patt);

        pilot_esti_ant1 = Rx_pilot_ant1.*conj(pilot_patt);

        %----------------LS估计的信道系数平铺———————————————

        LS_channel_coeff_ant0 = [repmat(pilot_esti_ant0(:, 1), 1, length(data_symbol)/2), ...

        repmat(pilot_esti_ant0(:, 2), 1, length(data_symbol)/2)];

        LS_channel_coeff_ant1 = [repmat(pilot_esti_ant1(:, 1), 1, length(data_symbol)/2), ...

        repmat(pilot_esti_ant1(:, 2), 1, length(data_symbol)/2)];

        %----------------导频位置DFT信道估计----------------------------

        Tx_pilot_estimate_ifft_ant0 = ifft(pilot_esti_ant0);

        Tx_pilot_estimate_ifft_ant1 = ifft(pilot_esti_ant1);

        stem(1:, Tx_pilot_estimate_ifft_ant0(:,1));

        grid on;

        h_len = cp_len(2);

        Tx_pilot_estimate_ifft_ant0(h_len+1 : num_sc-h_len, :) = 0;

        Tx_pilot_estimate_dft_ant0 = fft(Tx_pilot_estimate_ifft_ant0);

        Tx_pilot_estimate_ifft_ant1(h_len+1 : num_sc-h_len, :) = 0;

        Tx_pilot_estimate_dft_ant1 = fft(Tx_pilot_estimate_ifft_ant1);

        %----------------DFT估计的信道系数平铺———————————————

        DFT_channel_coeff_ant0 = [repmat(Tx_pilot_estimate_dft_ant0(:, 1), 1, length(data_symbol)/2),...

        repmat(Tx_pilot_estimate_dft_ant0(:, 2), 1, length(data_symbol)/2)];

        DFT_channel_coeff_ant1 = [repmat(Tx_pilot_estimate_dft_ant1(:, 1), 1, length(data_symbol)/2),...

        repmat(Tx_pilot_estimate_dft_ant1(:, 2), 1, length(data_symbol)/2)];

        %----------------ZF OR MRC EQ----------------------

        Tx_data_estimate_dft = (Rx_data_ant0.*conj(DFT_channel_coeff_ant0) + Rx_data_ant1.*conj(DFT_channel_coeff_ant1))...

        ./((abs(DFT_channel_coeff_ant0).^2) + (abs(DFT_channel_coeff_ant0).^2));

        Tx_data_estimate_ls = (Rx_data_ant0.*conj(LS_channel_coeff_ant0) + Rx_data_ant1.*conj(LS_channel_coeff_ant1))...

        ./((abs(LS_channel_coeff_ant0).^2) + (abs(LS_channel_coeff_ant1).^2));

        %----------------DFT符号解调------------------------------------

        demod_in_dft=Tx_data_estimate_dft(:).';

        demod_out_dft=qamdemod(demod_in_dft,modulation_mode);

        %----------------LS符号解调------------------------------------

        demod_in_ls=Tx_data_estimate_ls(:).';

        demod_out_ls=qamdemod(demod_in_ls,modulation_mode);

        %----------------误码率的计算-----------------------------------

        for i=1:length(BitsTx)

        if demod_out_dft(i)~=BitsTx(i)

        num_bit_err_dft(c1,num1)=num_bit_err_dft(c1,num1)+1;

        end

        if demod_out_ls(i)~=BitsTx(i)

        num_bit_err_ls(c1,num1)=num_bit_err_ls(c1,num1)+1;

        end

        end

        end

       end

       BER_dft=mean(num_bit_err_dft.')/length(BitsTx);

       BER_ls=mean(num_bit_err_ls.')/length(BitsTx);

       %%%%%%%%%%%%%%%%%%%a%%%%%%%%主程序循环换结束%%%%%%%%%%%%%%%%%%%%%%%%%%%%

       figure;

       semilogy(SNR,BER_dft,'-mp',SNR,BER_ls,'-k+');

       xlabel('SNR');

       ylabel('BER');

       legend('DFT信道估计','LS信道估计');

       title('OFDM系统的LS和DFT信道估计');

       grid on;