求OFDM系统,Matlab大神写一个OFDM系统测量峰均值的程序只需要产生OFDM信号,并测量峰均值,产生峰均值响应波形就可以了!

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 17:57:56
求OFDM系统,Matlab大神写一个OFDM系统测量峰均值的程序只需要产生OFDM信号,并测量峰均值,产生峰均值响应波形就可以了!

求OFDM系统,Matlab大神写一个OFDM系统测量峰均值的程序只需要产生OFDM信号,并测量峰均值,产生峰均值响应波形就可以了!
求OFDM系统,Matlab大神写一个OFDM系统测量峰均值的程序
只需要产生OFDM信号,并测量峰均值,产生峰均值响应波形就可以了!

求OFDM系统,Matlab大神写一个OFDM系统测量峰均值的程序只需要产生OFDM信号,并测量峰均值,产生峰均值响应波形就可以了!

你也没说系统子载波数是多少,调试方式是QPSK呢,还是更高阶,很多参数都不知道.

我写了个小程序,调制方式是4QAM,子载波数是256,统计了10个OFDM符号.

clc;

clear;

LOOP = 10;      %   Simulation times

Symbol_peak = 0;

Symbol_average = 0;

data = [];

num_tone = 256;

bit_alloc = 2 * ones(1, num_tone);

%   Simulation begin

for i_loop = 1 : LOOP

    Tx_f = zeros(1, num_tone);

    for idx = 1 : num_tone

        bit_len = bit_alloc(idx);

        if 0 == bit_len         %   Do not carry any bit on this tone

            continue;

        else                    %   Bit Allocation and QAM mapping

            bits = randint(1, bit_len);

            bits = dec2bin(bits)';

            switch bits

                case '00'

                    signal = 1+i;

                case '01'

                    signal = 1-i;

                case '10'

                    signal = -1+i;

                case '11'

                    signal = -1-i;

            end

            

            Tx_f(idx) = signal;

        end

    end

    %   IFFT to time domain

    tmp = conj(Tx_f(2:end));

    tmp = fliplr(tmp);

    Symbol_f = [Tx_f 0 tmp];

    Symbol_t = ifft(Symbol_f);

    Symbol_t = real(Symbol_t);

    data = [data Symbol_t];

    %   PARA statistics

    if Symbol_peak < max(abs(Symbol_t))

        Symbol_peak = max(abs(Symbol_t));

    end

    Symbol_average = Symbol_average + sqrt(mean(abs(Symbol_t).^2));

end

Symbol_average = Symbol_average / LOOP;

PAR = Symbol_peak/Symbol_average;

%   Show result 

plot(data,'-b.');

xlabel('time');

ylabel('signal')

fprintf('PAP: %f\n', PAR);