The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Octave"
Версия для распечатки Пред. тема | След. тема
Форум Программирование под UNIX
Исходное сообщение [ Отслеживать ]

. "Octave" +/
Сообщение от reddemail (?), 11-Май-18, 17:22 
Вот программа для Matlab , запустилась на Octave без правок ....


close all; clear all; clc;

%% ИСХОДНЫЕ ДАННЫЕ
Fs = 100E3;         % частота дискретизации
f0 = 10E3;          % несущая частота

N = 16384;          % количество дискретных отсчетов
t = (0:N-1)/Fs;     % дискретное время.
frq = Fs*(0:N-1)/N - Fs/2;  % дискретная частота

%% ФОРМИРУЮ АМ НА ЧАСТОТЕ f0

sm  = cos(2*pi*100*t);  % модулирующий сигнал
mAM = 0.9;              % глубина АМ

s = (1+mAM.*sm).*cos(2*pi*f0*t); % AM сигнал на частоте f0

% рассчитываю спектр исходного сигнала и вывожу на график
S = fftshift(abs(fft(s)));
figure; subplot(211);   plot(t, s);
                        title('AM signal');
                        xlabel('time, sec');
                        
        subplot(212);   plot(frq, S);
                        title('spectr of AM signal');
                        xlabel('frequency, kHz');
                        
%% ПЕРЕНОС ПРИ ПОМОЩИ КВАДРАТУРНОГО ГЕТЕРОДИНА

i0 =  s.*cos(2*pi*f0*t);
q0 = -s.*sin(2*pi*f0*t);

%% ВЫДЕЛЕНИЕ ОГИБАЮЩЕЙ ПРИ ПОМОЩИ ФНЧ

[b a] = ellip(4, 0.1, 60, 0.1); % формирую ФНЧ

i = filter(b,a,i0); % фильтрую I канал
q = filter(b,a,q0); % фильтрую Q канал

z = i + 1i * q;     % выделенная комплексная огибающая

% рассчитываю спектр комплексной огибающей и вывожу на график
Z0 = fftshift(abs(fft(i0+1i*q0)));
Z  = fftshift(abs(fft(z)));
                        
figure; plot(frq, Z0, frq, Z, 'r');
        title('complex envelope spectr');
        xlabel('frequency, kHz');

%% ИЗМЕРЕНИЕ ГЛУБИНЫ АМ ИЗ ВЫДЕЛЕННОЙ ОГИБАЮЩЕЙ

amp = abs(z); % ам есть модуль огибающей z

% отбрасываю половину модуля чтобы исклюсить переходной процесс фильтрации
amp = amp(end/2:end);

% рассчет глубины и вывод на печать
mam = (max(amp) - min(amp))/(max(amp) + min(amp));
fprintf('исходная глубина модуляции:    %.4f\n', mAM);
fprintf('измеренная глубина модуляции:  %.4f\n', mam);


Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Octave, redd, 02-Май-18, 09:33  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру