Цитата(andyp @ May 5 2016, 12:38)

Под корнем автор N похоже забыл. С помощью m=1,2,... автор попытался математическим языком выразить, сколько блочных корреляционных коэффициентов у него получается. Ну т.е. если разбить область его область поиска на блоки размером B (пусть N, L делится на B нацело), то у него всего (2N+L)/B блоков. Автор коррелирует блок с номером m с блоком с номером m+N/B. Итого у него получится (N+L)/B корр. коэффициентов.
Ну вот смотрите я тут накидал код
Код
clear all; close all; clc;
%% Параметры модели
B = 16;
Nfft = 1024; Ng = Nfft/4; Nofdm = Ng+Nfft; % Параметры OFDM сигнала
nCar = 312;
Nbps = 4; M = 2^Nbps;
Nsym = 30; % Колличество генерируемых OFDM символов
H_QAM4=modem.qammod('M',M,'PhaseOffset', 0, 'SymbolOrder',...
'binary', 'InputType', 'bit');
Es = 1; A = (3/2/(M-1)*Es);
%% Формируем N символов OFDM сигнала
tx = [];
fft_in = complex(zeros(Nfft,Nsym),zeros(Nfft,Nsym));
QAM = zeros(Nsym,nCar);
In_Data = randi([0 1],Nsym,nCar*log2(M));
QAM = A*modulate(H_QAM4, In_Data');
fft_in(1:nCar/2,:) = QAM(1:nCar/2,:);
fft_in(end-nCar/2+1:end,:) = QAM(nCar/2+1:end,:);
fft_out = ifft(fft_in);
tx = [fft_out(end-Ng+1:end,:); fft_out]';
tx = reshape(tx', 1, Nsym*Nofdm);
sig=awgn(tx, 20, 'measured', 'dB');
BuffObserv = zeros(1, 2*Nfft+Ng);
buff1 = zeros(1,length(sig)-Nofdm);
P = [];
for num = 1:floor(length(sig)/(2*Nfft+Ng))
BuffObserv = sig(1, (num-1)*(2*Nfft+Ng)+1:num*(2*Nfft+Ng));
for d = 0:(Nfft+Ng)/B-1
corr(d+1) = sum(BuffObserv(d*B+(1:B)).*conj(BuffObserv(d*B+(1:B)+Nfft)));
energ(d+1) = sqrt(sum(abs(BuffObserv(d*B+(1:B)).^2))).*sqrt(sum(abs(BuffObserv(d*B+(1:B)+Nfft).^2)));
end
P = [P abs(corr./energ)];
end
plot(abs(P));
Правильно ли я реализовал то о чем там говорится?