Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 19.05.2019
Сообщений: 54
1

Амплитудная модуляций. Почему возникает ошибка при выполнении

12.01.2021, 19:12. Показов 452. Ответов 0

Author24 — интернет-сервис помощи студентам
Есть код, но не понимаю почему возникает ошибка при выполнении.
Код
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
%---- Код с симметричными комплексно-сопряженными спектрами -------------
 
%---------------- Ввод параметров цифрового сигнала ----------------------
 
M=26;              % << число передаваемых бит
fsig=57960;        % << частота повторения передаваемой последовательности
N=260;           % << число отсчетов временных и частотных характеристик
i=0:(N-1);        % номера отсчетов для построения характеристик
fs = fsig*N;      % частота дискретизации
f=fsig*i;         % масштаб по оси частоты
t=1/fs*i;         % масштаб по оси времени
 
%------------- Формирование дискретного цифрового сигнала ----------------
 
bit=round(rand(1,M)); % случайный цифровой сигнал из M бит
disp (bit);
S=bit(ceil((i+1)*M/N)); % выполняем дискретизацию цифрового сигнала
% на каждый бит приходится N/M дискретных отсчетов
% так как номера элементов в массиве bit начинаеются с 1, умножаем на i+1
%-------------- Ввод параметров и формирование несущей -------------------
Knes=52;                 % << во сколько раз частота несущей больше частоты сигнала
fnes=fsig*Knes;          % частота несущей
nes=sin(2*pi*f*Knes/fs); % формирование несущей
 
Sp=fft(S);         % Cпектр немодулированного сигнала до линии связи
ACH_Sp = abs(Sp);  % АЧХ
 
probErr1=[];
probErr2=[];
overAllProbErr=[];
 
for H=100:500:5000
    occurrenceErr1=[];
    occurrenceErr2=[];
    overAllOccurrenceErr=[];
    for V=0:1000
 
%------------------- Амплитудная модуляция сигнала -----------------------
S1=S.*nes;           % амплитудная модуляция сигнала
Sp1=fft(S1);         % Cпектр модулированного сигнала до линии связи
ACH_Sp1 = abs(Sp1);  % АЧХ
 
%----------------------- Модель линии связи ------------------------------
l = H;           % << длина линии связи, м%     b = i;
%     disp ('S6')
%     disp (b)
%     disp (S6(sync(i)))
 
R = 5e-3 +(42e-3)*sqrt(f*(1e-6)); % погонное сопротивление
L = 2.7e-7;         % погонная индуктивность
G = 20*f*(1e-15);   % погонная проводимость
C = 48e-12;         % погонная емкость
 
% построние АЧХ и ФЧХ линии связи
w=2*pi*f;           % вектор круговых частот
g1 = sqrt((R+1i*w*L).*(G+1i*w*C)); % коэффициент распространения волны
% disp ('g1')
% disp (g1)
K1=exp(-g1*l); % комплексная частотная характеристика линии связи
% disp ('K1')
% disp (K1)
ACH=abs(K1);   % АЧХ линии связи
FCH=unwrap(angle(K1)); % ФЧХ линии связи
% disp ('FCH')
% disp (FCH)
% функция unwrap убирает скачки фазы, когда значение atan превышает |pi|
 
% ------------ Прохождение сигнала через линию связи --------------------
Sp1((N/2+1):end)=0;  % Зануляем отрицательные частоты в спектре
Sp2 = Sp1.*K1;       % Пропускаем сигнал через линию связи
 
for k=1:N/2-1
    Sp2(N/2+k+1)=real(Sp2(N/2-k+1))-1i*imag(Sp2(N/2-k+1));
end
 
S2=ifft(Sp2);
 
 % ------------ Наложение шума после линии связи -------------------------
 % SNR=0.4; % соотношение энергий сигнала и шума, в разах
%  S3=awgn(S2,-13.4,'measured');
%  Sp3=fft(S3);
%  ACH_Sp3 = abs(Sp3);  % АЧХ
 
% ------------ Полосовой фильтр в приемнике -----------------------------
g = 13;              % << число ненулевых гармоник огибающей
F1 = zeros(1,N);
F1(Knes-g+1:Knes+g+1)=1; % формируем окно полосового фильтра
F1(N-Knes-g+1:N-Knes+g+1)=1;
Sp4=F1.*Sp3;         % пропускаем сигнал через фильтр
 
% ------------ Выпрямитель в приемнике ----------------------------------
S4=ifft(Sp4);        % после фильтрации ПФ переходим во временную область
S5=abs(S4);          % выпрямляем сигнал
 
% ------------ Фильтр нижнних частот в приемнике ------------------------
Sp5=fft(S5);         % для фильтрации ФНЧ переходим в частотную область
% спектр будет комплексно-сопрояженный с постоянной составляющей,
% поэтому занулять его нужно симметрично середине
Sp6=Sp5;
g=13;                % число гармоник, которое пропустит ФНЧ
Sp6((2+g):(N-g))=0;  % ФНЧ: зануляем в спектре гармоники с номером больше g
S6=ifft(Sp6);        % после фильтрации ФНЧ переходим во временную область
 
%----------- Вычисление задержки сигнала по ФЧХ -------------------------
% определяем задержку в радианах для основной гармоники сигнала, 
% чтобы синхронизировать приемник и передатчик
dt=FCH(3);
disp ('dt')
disp (dt)
dt=round(dt/(2*pi)*N); % переводим из радиан в отсчеты во временной области
disp ('dt2')
disp (dt)
%--------------- Определяем моменты измерения сигнала -------------------
sync=zeros(1,M);
sync(1)=(N/M)/2-dt; % первый строб - посередине первого символа + задержка
for i=2:M
      sync(i)=rem(sync(i-1)+N/M, N); % сложение в кольце по модулю N
end
 
%----------- Пороговый элемент -------------------------------
bit2=zeros(1,M);
for i=1:M
 if(S6(sync(i))>0.3)
  bit2(i)=1;
 else
  bit2(i)=0;
 end
end
    
%----------- Считаем число ошибок ---------------------------------------
err=sum(abs(bit-bit2));
disp('Число ошибок:');
disp(err);
err1=0;
err2=0;
for i=2:2:M
   if (bit2(i) ~= bit(i))
       err1=err1+1;
   end
end
for n=1:2:M
    if (bit2(n) ~= bit(n))
        err2=err2+1;
    end
end
occurrenceErr1(end+1)=err1/26;
occurrenceErr2(end+1)=err2/26;
overAllOccurrenceErr(end+1)=err/26;
    end
  probErr1(end+1)=sum(occurrenceErr1)/V(end);
  probErr2(end+1)=sum(occurrenceErr2)/V(end);
  overAllProbErr(end+1)=sum(overAllOccurrenceErr)/V(end);
end
HH=[100:500:5000];
figure(1);
plot(HH,overAllProbErr,HH,probErr1,HH,probErr2);
title ('Вероятность ошибки в зависимости от значения Протяженности линии связи');
xlabel('Значение l');
ylabel('Вероятность ошибки');
legend('Общая вероятность ошибки', 'Вероятность ошибки первого рода','Вероятность ошибки второго рода');

Добавлено через 7 минут
Нужно нулевую гармонику сдвинуть на один отсчет
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2021, 19:12
Ответы с готовыми решениями:

Почему при выполнении оператора delete возникает ошибка "program.exe has triggered a breakpoint"?
class test { public: void a() { std::cout &lt;&lt; &quot;test::a&quot; &lt;&lt; std::endl; } }; class test2...

При выполнении кода возникает ошибка
Здравствуйте, дорогие формучане! 1. При выполнении кода выдаёт ошибку if...

При выполнении запроса UPDATE возникает ошибка ORA-00933: SQL command not properly ended для таблицы с составным ключом
Эй, ребята, я пытаюсь обновить свою таблицу следующей частью кода: private void...

Почему возникает ошибка при расчете
Из-за чего выдает ошибку?

0
12.01.2021, 19:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2021, 19:12
Помогаю со студенческими работами здесь

При добавлении выполнении макроса возникает ошибка "Исключение из HRESULT: 0x800A03EC"
Здравствуйте. Вылетает ошибка при выполнении кода. Помогите, пожалуйста разобраться. Спасибо. ...

Почему возникает ошибка при вычислении интеграла?
Вычисление второго интеграла; e1 :=matrix(], ]]); R :=matrix(, ]); tau := matrix(, ]); i :=...

Почему возникает ошибка при обработке события
При нажатии на кнопку поставил данный код: ofstream outfile (“123.txt” , ios::app); outfile...

Почему возникает ошибка при вычислении алгебраической суммы?
Здраствуйте! Кто-то может мне объяснить почему следущий пример не работает?

Почему возникает ошибка при доступе к элементу массива?
Мой код $sqlemail=&quot;select men_e_mail,kod1c from clients where kod=:kod&quot;;...

Почему возникает ошибка при запуске Sony Vegas?
Запускается только если отключить видеоадаптеры.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru