Бесплатно создать живой форум для общения, сайта, игр!
Ведущий российский сервис бесплатных форумов ЖивыеФорумы.ру
Удобные, многофункциональные и надёжные форумы бесплатно.

Фавикон: Форум сайтов "Радиотехнические цепи и сигналы" и "Статистическая теория радиотехнических систем"

«Форум сайтов "Радиотехнические цепи и сигналы" и "Статистическая теория радиотехнических систем"»

Форум сайтов "Радиотехнические цепи и сигналы" и "Статистическая теория радиотехнических систем"
Форум сайтов "Радиотехнические цепи и сигналы" и "Статистическая теория радиотехнических систем"

Активные темы на форуме «Форум сайтов "Радиотехнические цепи и сигналы" и "Статистическая теория радиотехнических систем"»:

Как рисовать графики в MATLAB
Последнее сообщение от L_DelOff в :

Всем доброго времени суток и с наступившими праздниками!
В статье пойдёт речь о построении графиков в MATLAB для моей курсовой по дисциплине радиотехнические цепи и сигналы. Никаких мегакрутых и инновационных алгоритмов и тайных знаний здесь нет. Статья предназначена для помощи студентам с потока в оформлении курсовой работы. Итак, поехали:
Для тех, кто не хочет читать, сразу выложу свой код, а потом постараюсь подробно всё описать.

Код:
function PTC
%% 1 пункт
figure
x=[];
y=[];
for t=-10:0.01:10
    x=[x,t];
    t=t/1000;
    y=[y,sig(t)];
end
plot(x,y), grid
xlabel('t, мс');
ylabel('s(t), В');
title('Сигнал');
%% Спектры
figure
x=[];
y=[];
subplot(2,1,1)
for w=-15:0.01:15
    x=[x,w];
    w=w*1000;
    y=[y,1000*S(w)];
end
plot(x,y), grid
xlabel('\omega, рад/мс');
ylabel('|S(\omega)|, В/кГц');
title('Амплитудный спектр');
%%
y=[];
subplot(2,1,2)
for w=-15:0.01:15
    w=w*1000;
    y=[y,fi(w)];
end
plot(x,y), grid
xlabel('\omega, рад/мс');
ylabel('\phi(\omega), \circ');
title('Фазовый спектр');
%% 2 пункт
% Sп(t)
figure
x=[];
y=[];
T=30*10^-3;
for t=-80:0.1:80
    s=0;
    x=[x,t];
    t=t/1000;    
    for n=-10:10
        s=s+sig(t-n*T);
    end      
    y=[y,s];    
end
plot(x,y,'LineWidth' ,2),grid
xlabel('t, мс');
ylabel('s_п(t), В');
title('Временная диаграмма периодического сигнала');
%% Спектры
figure
x=[];
y=[];
subplot(2,1,1,'xlim',[0,10])
for n=0:50
    w=2*pi*n/T; %ось х мс
    x=[x,w/1000];
    s=2/T*S(w);
    if n==0
        s=s/2;
    end
    y=[y,s];
    line([w/1000 w/1000],[0 s]);
    line(w/1000, s,'marker','.','markersize' ,10)
end
hold on
plot(x,y,'--','Color',[1 0 0]);
grid,
xlabel('\omega, рад/мс');
ylabel('\{A_n\}, В');
title('Амплитудный спектр');
%%
subplot(2,1,2,'xlim',[0,10])
for n=0:50
    w=2*pi*n/T; 
    line([w/1000 w/1000],[0 fi(w)]);
    line(w/1000, fi(w),'marker','.','markersize' ,10);
end
x=[];
y=[];
for w=0:0.01:10
    x=[x,w];
    w=w*1000;
    y=[y,fi(w)];    
end
hold on
plot(x,y,'--','Color',[1 0 0]);
grid
xlabel('\omega, рад/мс');
ylabel('\{\phi_n\}, \circ');
title('Фазовый спектр');
%% Апроксимация n=10
figure
x=[];
y=[];
subplot(3,1,1)
for t=-15:0.01:15
    x=[x,t];
    t=t/1000;
    s=2/15;    
    for n=1:10
        w=2*pi*n/T; %ось х мс
        s=s+2/T*S(w)*cos(w*t+pi/180*fi(w));
    end
    y=[y,s];
end
plot(x,y)
grid
xlabel('t, мс');
ylabel('s_п(t), В');
title('n=10');
%% n=25
x=[];
y=[];
subplot(3,1,2)
for t=-15:0.01:15
    x=[x,t];
    t=t/1000;
    s=2/15;    
    for n=1:25
        w=2*pi*n/T; %ось х мс
        s=s+2/T*S(w)*cos(w*t+pi/180*fi(w));
    end
    y=[y,s];
end
plot(x,y)
grid
xlabel('t, мс');
ylabel('s_п(t), В');
title('n=25');
%% n=50
x=[];
y=[];
subplot(3,1,3)
for t=-15:0.01:15
    x=[x,t];
    t=t/1000;
    s=2/15;    
    for n=1:50
        w=2*pi*n/T; %ось х мс
        s=s+2/T*S(w)*cos(w*t+pi/180*fi(w));
    end
    y=[y,s];
end
plot(x,y)
grid
xlabel('t, мс');
ylabel('s_п(t), В');
title('n=50');
%% 3 пункт
figure
x=[];
y=[];
v=[];
w=20000;
for t=-5:0.001:5
    x=[x,t];
    t=t/1000;    
    y=[y,sig(t)*cos(w*t)];
    v=[v,sig(t)];    
end
hold on;
plot(x,y),grid
plot(x,v,'--','Color',[1 0 0])
plot(x,-v,'--','Color',[1 0 0])
xlabel('t, мс');
ylabel('u(t), В');
title('Временная диаграмма непериодического радиосигнала');
%% положительные частоты
figure
x=[];
y=[];
subplot(2,1,1)
for w=490:0.001:510
    x=[x,w];
    w=w*1000;
    y=[y,500*S(w-500000)];
end
plot(x,y), grid
xlabel('\omega, рад/мс');
ylabel('|U(\omega)|, В/кГц');
title('Амплитудный спектр');
%% 
y=[];
subplot(2,1,2)
for w=490:0.001:510
    w=w*1000;
    y=[y,fi(w-500000)];
end
plot(x,y), grid
xlabel('\omega, рад/мс');
ylabel('\phi_U(\omega), \circ');
title('Фазовый спектр');
%% отрицательные частоты
figure
x=[];
y=[];
subplot(2,1,1)
for w=-510:0.001:-490
    x=[x,w];
    w=w*1000;
    y=[y,500*S(w+500000)];
end
plot(x,y), grid
xlabel('\omega, рад/мс');
ylabel('|U(\omega)|, В/кГц');
title('Амплитудный спектр');
%%
y=[];
subplot(2,1,2)
for w=-510:0.001:-490
    w=w*1000;
    y=[y,fi(w+500000)];
end
plot(x,y), grid
xlabel('\omega, рад/мс');
ylabel('\phi_U(\omega), \circ');
title('Фазовый спектр');
%% 4 пункт
% Sп(t)
figure
x=[];
y=[];
v=[];
s1=0;
s2=0;
w0=15000;
for t=-40:0.001:40
    x=[x,t];
    t=t/1000;    
    for n=-1:1
        s1=s1+sig(t-n*T)*cos(w0*t);
        s2=s2+sig(t-n*T);
    end
    y=[y,s1];   
    v=[v,s2];
    s1=0;
    s2=0;
end
hold on
plot(x,y),grid
plot(x,v,'--','Color',[1 0 0])
plot(x,-v,'--','Color',[1 0 0])
xlabel('t, мс');
ylabel('u_п(t), В');
title('Временная диаграмма периодического радиосигнала');
%% Спектры пачки радиоимпульсов
figure
x=[];
y=[];
subplot(2,1,1,'xlim',[490 510])
for n=-50:50
    w=2*pi*n/T; %ось х мс
    x=[x,w/1000+500];
    y=[y,1/T*S(w)];
    line([w/1000+500 w/1000+500],[0 1/T*S(w)]);
    line(w/1000+500, 1/T*S(w),'marker','.','markersize' ,10)
end
hold on
plot(x,y,'--','Color',[1 0 0]);
grid,
xlabel('\omega, рад/мс');
ylabel('\{V_n\}, В');
title('Амплитудный спектр');
%%
x=[];
y=[];
subplot(2,1,2,'xlim',[490 510])
for n=-50:50
    w=2*pi*n/T; %ось х мс
    x=[x,w/1000+500];
    y=[y,fi(w)];
    line([w/1000+500 w/1000+500],[0 fi(w)]);
    line(w/1000+500, fi(w),'marker','.','markersize' ,10);
end
x=[];
y=[];
for w=-10:0.01:10
    x=[x,w+500];
    w=w*1000;
    y=[y,fi(w)];
end
hold on
plot(x,y,'--','Color',[1 0 0]);
grid
xlabel('\omega, рад/мс');
ylabel('\{\psi_n\}, \circ');
title('Фазовый спектр');
%% 5 пункт
%АКФ
figure
x=[];
y=[];
for t=-10:0.01:10
    x=[x,t];
    t=t/1000;
    y=[y,1000*R(t)];
end
plot(x,y), grid
xlabel('\tau, мс');
ylabel('R_s(\tau), В^2мc');
title('Автокорелляционная функция сигнала');
%% АКФ радиоимпульса
figure
x=[];
y=[];
for t=-10:0.01:10
    x=[x,t];
    t=t/1000;
    y=[y,1/2*1000*R(t)*cos(w0*t)];
end
hold on;
plot(x,y), grid
x=[];
y=[];
for t=-10:0.01:10
    x=[x,t];
    t=t/1000;
    y=[y,1/2*1000*R(t)];
end
plot(x,y,'--','Color',[1 0 0]);
plot(x,-y,'--','Color',[1 0 0]);
xlabel('\tau, мс');
ylabel('R_u(\tau), В^2мc');
title('Автокорелляционная функция радиосигнала');
%% 6 пункт
% ачх фчх
figure
x=[];
y=[];
subplot(2,1,1)
for wt=-5:0.01:5
    x=[x,wt];
    y=[y,(1/36*wt^2/(1+wt^2))^0.5];
end
plot(x,y), grid
xlabel('\omega\tau, рад');
ylabel('|H(\omega)|');
title('АЧХ');
%%
y=[];
subplot(2,1,2)
for wt=-5:0.01:5
    y=[y,(180/pi)*(pi/2*sign(wt)-atan(wt))];
end
plot(x,y), grid
xlabel('\omega\tau, рад');
ylabel('\phi_H(\omega), \circ');
title('ФЧХ');
%% ИХ ПХ g1
figure
x=[];
y=[];
subplot(3,1,1)
for t=0:0.001:1
    x=[x,t];
    t=t/1000;
    y=[y,(-1/(6*0.0002)*sigma(t)*exp(-t/0.0002))/1000];
end
plot(x,y,'LineWidth' ,2)
grid
xlabel('t, мс');
ylabel('h(t), мс^-1');
title('Импульсная характеристика');
%% ПХ
x=[];
y=[];
subplot(3,1,2)
for t=0:0.001:1
    x=[x,t];
    t=t/1000;
    y=[y,g(t)];
end
plot(x,y,'LineWidth' ,2)
grid
xlabel('t, мс');
ylabel('g(t)');
title('Переходная характеристика');
%% Реакция на лин нар возд
x=[];
y=[];
subplot(3,1,3)
for t=0:0.001:1
    x=[x,t];
    t=t/1000;
    y=[y,(1/6*0.0002*(1-exp(-t/0.0002)))];
end
plot(x,y,'LineWidth' ,2)
grid
xlabel('t, мс');
ylabel('g_1(t)');
title('g_1(t)');
%% Запаздывание
figure
x=[];
y=[];
for t=-2:0.001:8
    x=[x,t];
    t=t/1000;
    y=[y,sig(t-0.002)];
end
plot(x,y,'LineWidth' ,2)
grid
xlabel('t, мс');
ylabel('s_з(t), В');
title('Запаздывающий сигнал');
%% uвх
figure
x=[];
y=[];
for t=-2:0.001:8
    x=[x,t];
    t=t/1000;
    s=sigma(t)-sigma(t-0.002)+sigma(t-0.004)-sigma(t-0.006);
    y=[y,s];
end
plot(x,y,'LineWidth' ,1)
grid
xlabel('t, мс');
ylabel('u_{вых}(t), В');
title('Cигнал на входе цепи');
%% uвых
figure
x=[];
y=[];
for t=0:0.001:8
    x=[x,t];
    t=t/1000;
    s=g(t)-g(t-0.002)+g(t-0.004)-g(t-0.006);
    y=[y,s];
end
plot(x,y,'LineWidth' ,1)
grid
xlabel('t, мс');
ylabel('u_{вых}(t), В');
title('Cигнал на выходе цепи');
end
%%
function f=S(w)
t1=0.002;
f=2*t1*abs(sinc(w*t1/2)*cos(w*t1));
end
%%
function f=fi(w)
t1=0.002;
f=(180/pi)*(pi/2*(1-sign(sinc(w*t1/2)*cos(w*t1)))*sign(w)-w*t1/2);
end
%%
function f=sig(t)
t1=0.002;
f=(rect((t+t1/2)/t1)+rect((t-3*t1/2)/t1));
end
%%
function f=R(t)
t1=0.002;
f=(2*t1*(1-abs(t)/t1)*rect(t/(2*t1))+t1*(1-abs(abs(t)-2*t1)/t1)*rect((abs(t)-2*t1)/(2*t1)));
end
%%
function f=g(t)
f=1/6*sigma(t)-1/6*sigma(t)*(1-exp(-t/0.0002));
end
%%
function S=sigma(x)
if x<0 
    S=0;
else
    S=1;
end
end
%%
function S=rect(x)
if abs(x)>0.5 
    S=0;
end
if abs(x)<0.5 
    S=1;
end
if abs(x)==0.5 
    S=0.5;    
end
end
%%
function S=sinc(x)
if x==0 
    S=1;
else
    S=sin(x)/x;
end
end
%%
function S=sign(x)
if x<0 
    S=-1;
end
if x>0 
    S=1;
end
if x==0 
    S=0;    
end
end

Введение
Итак, вы установили MATLAB. Теперь его надо запустить.
Курсовая работа - Начать новую тему
После этого в поле Command Window нужно написать edit, чтобы открыть редактор, где и будем писать программу.
Курсовая работа - Начать новую тему
Курсовая работа - Начать новую тему
Расположение окон может быть несколько иным, но суть не меняется. Теперь будем разбираться с самой программой.

Код:
%% 1 пункт
figure
x=[];
y=[];
for t=-10:0.01:10
    x=[x,t];
    t=t/1000;
    y=[y,sig(t)];
end
plot(x,y), grid
xlabel('t, мс');
ylabel('s(t), В');
title('Сигнал');

figure нужен для создания окна, в котором и будут построены нужные графики.
Далее создаём пустые массивы x и y, которые будут содержать координаты точек.
Теперь нужно заполнить эти массивы. Для этого создадим цикл for. Конструкция t=-10:0.01:10 означает: переменная t будет меняться от -10 до 10 с шагом 0.01(по умолчанию шаг равен 1). Чем меньше шаг, тем более плавным получается график, но медленнее строится, т.к. операций становится больше.
x=[x,t] – производит добавление элемента к массиву с сохранением предыдущих. В данном примере это выглядит так:
Изначально массив пустой x=[];
1. Первая итерация - x=[-10] ;
2. x=[-10 -9,99];
3. x=[-10 -9,99 -9,98];

n. x=[-10 -9,99 -9,98 … 9,99 10];
t=t/1000 – рисовать будем не в секундах, а в миллисекундах. Можно этого не делать, тогда в условие цикла будет такое: t=-0.010:0.00001:0.010. От нулей рябит в глазах, плюс выше вероятность ошибки.
y=[y,sig(t)]; - заполняем массив y. sig(t) – функция, которую мы определим в конце. Она будет возвращать значение функции заданного сигнала, т.е t – это x, а sig(t) – y.
Вот как я описал sig(t):

Код:
function f=sig(t)
t1=0.002;
f=(rect((t+t1/2)/t1)+rect((t-3*t1/2)/t1));
end

Аналогично ввожу функцию rect

Код:
function S=rect(x)
if abs(x)>0.5 
    S=0;
end
if abs(x)<0.5 
    S=1;
end
if abs(x)==0.5 
    S=0.5;    
end
end

abs(x) возвращает модуль числа x.
Команда plot(x, y) соответствует построению функции, когда одномерный массив x соответствует значениям аргумента, а одномерный массив y - значениям функции.
grid добавляет на график сетку
xlabel и уlabel – добавление подписей осей.
title – название графика
Результат работы этой части программы(нажать F5 для запуска)
Курсовая работа - Начать новую тему
Можно сохранять картинку. Жмём на соответствующую иконку, выбираем формат bmp или jpg, сохраняем.
Аналогично рисуем спектры.

Код:
figure
x=[];
y=[];
subplot(2,1,1)
for w=-15:0.01:15
    x=[x,w];
    w=w*1000;
    y=[y,1000*S(w)];
end
plot(x,y), grid
xlabel('\omega, рад/мс');
ylabel('|S(\omega)|, В/кГц');
title('Амплитудный спектр');
%%
y=[];
subplot(2,1,2)
for w=-15:0.01:15
    w=w*1000;
    y=[y,fi(w)];
end
plot(x,y), grid
xlabel('\omega, рад/мс');
ylabel('\phi(\omega), \circ');
title('Фазовый спектр');

subplot(2,1,1) и subplot(2,1,2) позволяют в одном окне рисовать графики в первой и второй половине окна.
w=w*1000; - как с секундами, только в одном рад/с тысяча рад/мс
По тем же причинам перемножаем значения амплитудного спектра на 1000.
\omega – так можно напечатать символ омега малое в матлабе.
Нужно отметить, чтобы нарисовать фазовый спектр в градусах, нужно домножить всё выражение на 180/3.1415.
Как это выглядит
Курсовая работа - Начать новую тему
Переходим к следующему пункту. Далее я не буду приводить целые куски кода, поэтому советую перенести код из начала статьи в матлаб.
T – период повторения импульса.

Код:
for n=-10:10
        s=s+sig(t-n*T);
end

Этот цикл позволяет получить выражение для пачки импульсов из выражения непериодического сигнала. В курсовой n изменяется от минус до плюс бесконечности. Но для построения нам будет предостаточно 20 периодов(лишние всё равно не будут видны, границы графика определяется циклов for выше. Я подгонял эти границы, чтобы увидеть 5 периодов).
При построении спектральных диаграмм пришлось по-другому ограничивать эту область ( subplot(2,1,1,'xlim',[0,10]) )
Спектр периодического сигнала дискретен, для получения выражений нужно использовать связь непериодического и периодического сигналов. Для построения спектральных линий буду использовать оператор line. n в цикле for – количество этих линий. Подбирается вручную.
line([x1 x2],[y1 y2])
line([w/1000 w/1000],[0 s]) – рисует перпендикуляр от оси абсцисс.
line(w/1000, s,'marker','.','markersize' ,10) - изображает точку('marker','.'), 'markersize' ,10 –толщина точки.
hold on – позволяет строить несколько функций на одном графике.
plot(x,y,'--','Color',[1 0 0]); - рисует пунктирную линию («--»), красным цветом('Color',[r g b]).
Курсовая работа - Начать новую тему
При построении графиков нужно убедиться, что фаза выражена в радианах.
В третьем и четвёртом пунктах проводится исследования радиосигналов
w0=15000; w=20000 – частота несущей, которая будет использоваться при построении(подбирается, чтобы было наглядно)
500000 – реальная частота несущей(находим в курсовой)
Далее сложностей уже не должно возникнуть.
Удачи при выполнении курсовой!
Леонид Делов, 3 января 2019
lad_kursk@mail.ru
https://vk.com/l_deloff

Казусы распределения огибающей узкополосного процесса
Последнее сообщение от circuits-signals в :
Руслан написал(а):

Как известно-белый шум имеет нормальное распределение.

Не-а. Это не известно. Известно, что белый шум имеет равномерный спектр мощности. Мухи отдельно, котлеты отдельно.

Руслан написал(а):

Почему получается то, что огибающая узкополосного процесса имеет распределение Райса?

На этот вопрос вы сможете ответить сразу же как только скажете какое распределение имеет процесс на выходе П-образного фильтра? Для того, чтобы ответить на этот вопрос надо понять является ли инерционным преобразование белого шума П-образным фильтром и какой эффект имеет место при линейном инерционном преобразовании.

Кривые обнаружения сигнала со случайной начальной фазой
Последнее сообщение от circuits-signals в :

Но \(I_0(z)\) - это не просто функция Бесселя \(J_0(z)\), а модифицированная функция Бесселя. Функции Бесселя и модифицированные функции Бесселя между собой связаны:
\(I_n(z)=e^{-j\frac{\pi n}{2}}J_n(jz)\)
А код в маткад, который вам следует использовать I0(z).

Амплитудная манипуляция
Последнее сообщение от circuits-signals в :

Также, как и для любого сигнала. Надо описать сигнал математически и найти его спектральную плотность с использованием теорем спектрального анализа. Сигнал с амплитудной манипуляцией описывается одним из выражений (в зависимости от способа формирования):
1. \(s(t)=\sum\limits_{n=0}^{N-1}v_ns_0(t-nT)cos(\omega_0 t)\);
2. \(s(t)=\sum\limits_{n=0}^{N-1}v_ns_0(t-nT)cos(\omega_0 (t-nT))\);
где \(s_0(t)\) - прямоугольный импульс единичного размаха на интервале \([0,T]\); \(v_n\in\{0,1\}\) - кодовая последовательность; \(T\) - длительность элемента сигнала; \(N\) - количество элементов сигнала.
Спектральная плотность, например, в случае 1:
\(S(\omega)=F\left\{\sum\limits_{n=0}^{N-1}v_ns_0(t-nT)cos(\omega_0 t)\right\}=\sum\limits_{n=0}^{N-1}v_nF\left\{s_0(t-nT)cos(\omega_0 t)\right\}=...\)
Далее с использованием свойств запаздывания и смещения спектра (умножения сигнала на косинус). Обозначено \(F\{\cdot\}\) - преобразование Фурье.

Будут ли закончены лекции?
Последнее сообщение от circuits-signals в :

Здравствуйте!

Будут. Но когда именно  - неизвестно. 

Дело в том, что дисциплину "Статистическая теория радиотехнических систем" уже исключили из учебных планов. Часть материала перешла в "Статистическую радиотехнику". Но количество часов теперь сильно урезано. Добавлять материал в таких условиях мне вроде бы и не к чему. Проблема, разумеется не в том, чтобы добавлять, а в том, чтобы перевести его в электронный вид. Это требует усилий и времени.

Лекции
Последнее сообщение от circuits-signals в :

Здравствуйте!

Когда-нибудь будут. Часть лекций уже переведены в электронный вид.
Теперь учебник нужно завершить, дождаться выхода электронного учебного пособия.