copare_psk_mod.m
Primary tabs
Forums:
пример скрипта copare_psk_mod.m
Для удобства отладки определение созвездия следует записать прямо в copare_psk_mod.m - тогда не придётся предварительно запускать файл siganl.m
clear inphase = [0.5 0.5 1 1 1 1 1.5 1.5]; % задаём массив из координат х точек первой четверти quadr = [-1 -1.5 -0.5 -1 -1.5 -2 -1 -1.5]; % задаём массив из координат х точек первой четверти inphase = [inphase; -inphase]; % формируем координаты икс для всех четвертей inphase = inphase(:); % из матрицы-строки получаем матрицу-столбец (заморочка матлаба) quadr = [quadr; -quadr]; quadr = quadr(:);% из матрицы-строки получаем матрицу-столбец (заморочка матлаба) const = inphase + j*quadr; % формируем созвездие EbNoVec = [-2:1:20]; %axis([-2 10 1e-5 .1]); SERVec_PSK = []; load_system('compare_PSK'); % фактически - имя файла модели без расширения opts = simset('SrcWorkspace','Current','DstWorkspace','Current'); set_param('compare_PSK/AWGN Channel PSK','EsNodB','EbNodB+10*log10(16)'); %EbNodB+10*log10(4) set_param('compare_PSK/Error Rate Calculation PSK','numErr','1e4'); % Simulate multiple times. for n = 1:length(EbNoVec) fprintf (1,'Выполняем %2d запуск из %d\n',n,length(EbNoVec)); EbNodB = EbNoVec(n); sim('compare_PSK',1e7,opts); SERVec_PSK(n,:) = PSK_SER; semilogy(EbNoVec(n),SERVec_PSK(n,1),'go-'); % Plot point. % title('Bit Error Rate (BER)'); % legend('Actual BER'); % xlabel('Eb/No (dB)'); ylabel('Bit Error Rate'); hold on; drawnow; end hold off; % BER_PSK_16_an=(2/4)*0.5*erfc(sin(pi/16)*sqrt(4*2*(10.^(EbNoVec./10)))/sqrt(2)); % semilogy(EbNoVec,SERVec_PSK(:,1),'go',EbNoVec,4.*BER_PSK_16_an,'mx:','LineWidth',1.2); set(gca, ... 'XAxisLocation','bottom', ... 'XTickMode','auto', ... 'YTickMode','auto', ... 'FontSize',14, ... 'FontName','Arial Unicode MS', ... 'Box','on'); legend('Simulation','MY analit',3); % названия графиков grid off; %title('Symbol Error Rate (SER)','FontSize',14); xlabel('Eb/No (dB)','FontSize',14); ylabel('SER','FontSize',14); hold off;
- Log in to post comments
- 2542 reads