С Новым годом! Форум программистов, компьютерный форум, киберфорум
Scilab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/40: Рейтинг темы: голосов - 40, средняя оценка - 4.95
Заблокирован
1

Обработка сигналов и изображений на SciLab

23.01.2016, 05:50. Показов 7235. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе утро!
Помогите, пожалуйста, кто-нибудь и чем может. Как правильно пользоваться средствами SciLab 5.5.0 — при сравнении и расчётах по модуляциям сигналов?
Смотрите почти аналог: Очерк А.Б.Сергиенко "Цифровая модуляция"

Вопросы такие:
1) три вида сигналов - синусоидальный, прямоугольный, треугольный;
2) три метода модуляции сигналов - амплитудная, фазовая и частотная;
3) сравнить эти методы по критериям энергетической эффективной, вероятности ошибки на бит и объему сигнала.

Описание рисунков — ниже, с применением критериев
Кликните здесь для просмотра всего текста
Основными критериями эффективности различных видов модуляции являются критерии спектральной и энергетической эффективности. Энергетическая эффективность характеризует энергию, которую необходимо 4 затратить для передачи информации с заданной достоверностью (вероятностью ошибки). Спектральная эффективность характеризует полосу частот, необходимую для того, чтобы передавать информацию с определенной скоростью. Кроме данных критериев, виды модуляции сравниваются по устойчивости к различным типам помех и искажений и сложности аппаратной реализации. Существуют также специфические критерии, существенные для отдельных систем связи, отражающие особенности канала связи. Было показано [1, 2, 3], что увеличение позиций (уровней) модуляции (модуляции M-ASK, M-PSK и M-QAM) увеличивает спектральную эффективность в k = log2 M раз. Также было отмечено, что MSK (частотная модуляция с минимальным сдвигом) является спектрально в 2.6 раза менее эффективной, чем QPSK (квадратурная модуляция) и в 1.3 раза менее эффективной, чем BPSK (двоичная фазовая модуляция). Сравним виды модуляции по критерию энергетической эффективности. В [1, 2] показано, что с увеличением позиционности модуляции, вероятность битовой ошибки увеличивается. Таким образом, как правило, при увеличении спектральной эффективности энергетическая эффективность уменьшается. Сравним двухуровневые OOK, BPSK и MSK. Соответствующие графики были получены в [1] и показаны на рис.2. Как видно из рис.2 OOK (бинарная амплитудная манипуляция) и MSK имеют одинаковую эффективность и уступают BPSK (и, соответственно, QPSK) по энергетической эффективности приблизительно3 дБ.

По результатам приведенного сравнения можно сделать вывод о том, что при числе уровней до 4 включительно QPSK является спектрально и энергетически наиболее эффективным видом модуляции. Сравним теперь модуляции с числом уровней M>4. На рис.3, полученного в [1], изображено сравнение энергетической эффективности для амплитудной, фазовой и амплитудно-фазовой манипуляции при M=16 и M=64.5

Как видно из рис.3 амплитудная модуляция существенно более10 дБ при M=16 уступает фазовой и амплитудно-фазовой, поэтому при M=64 сравнение с ней не проводится. При сравнении M-PSK с M-QAM видно, что M-QAM превосходит по эффективности M-PSK, причем энергетический выигрыш M-QAM увеличивается с ростом M. Например, для M=16 выигрыш составляет около 4 дБ, а при M=64 около10 дБ. Физически это объясняется тем, что расстояние между соседними точками в сигнальном созвездии M-PSK меньше, чем M-QAM. Сигнальное созвездие M-PSK представляет собой окружность с равномерно распределенными на ней точками, а созвездие M-QAM – квадрат с равномерно распределенными по его площади точками. Чем больше расстояние между точками в созвездии, тем менее вероятна ошибка в детектировании соседнего символа. Таким образом, при ограниченной полосе, при M ≤ 4 наиболее эффективной является модуляция QPSK, а при M > 4 – QAM. QPSK является частным случаем QAM при M=4. Можно считать QAM наиболее эффективным видом модуляции при любом числе уровней.
Миниатюры
Обработка сигналов и изображений на SciLab   Обработка сигналов и изображений на SciLab  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2016, 05:50
Ответы с готовыми решениями:

Цифровая обработка сигналов и изображений
Здравстуйте!!! Подскажите какие можно использовать компоненты и алгоритмы, чтобы создать программу...

Обработка ЧМ сигналов(спектры ЧМ сигналов)
Доброго времени суток! Ранее задавала вопрос: "Алгоритм обработки ЧМ сигналов, основанный на...

Низкочастотная фильтрация изображений (книга Гонсалеса “Цифровая обработка изображений”)
Здравствуйте. Я пытаюсь реализовать на java низкочастотную фильтрацию изображений. Реализую по...

Обработка экспериментальных данных Scilab
Здравтвуйте! В результате эксперимента была определена некоторая табличная зависимость. С помощью...

15
Заблокирован
23.01.2016, 06:27  [ТС] 2
Есть интересные наработки, которые пока скачать не могу, ниже.

Математический Аппарат Теории Сигналов и Систем: Учебно-методическое пособие для лабораторных работ / Долгих Д. А. – 2013. 16 с.

Кликните здесь для просмотра всего текста
Математический Аппарат Теории Сигналов и Систем
Учебно-методическое пособие для лабораторных работ
Авторы Долгих Д. А.
УДК не указано

Лабораторные работы по курсу математический аппарат теории сигналов и систем выполняются на компьютерах в программном продукте SciLAB. Для ознакомления с принципами работы с данным программным продуктом можно воспользоваться [1]. Помощь в использовании SciLAB также можно получить, посетив ресурс http://www.scilab.org/ или же воспользовавшись контекстной помощью поставляемой вместе с программным продуктом.
Год издания 2013
Количество страниц 16
Математический Аппарат Теории Сигналов и Систем: Учебно-методическое пособие для лабораторных работ / Долгих Д. А. – 2013. 16 с. (Вы не можете скачать)

Содержание
Введение
Лабораторная работа №1
Согласованная фильтрация
Цель работы
Теоретическая часть
Лабораторное задание
Список минимально необходимых команд SciLAB
Контрольные вопросы
Лабораторная работа №2
Цифровые виды модуляции. DQPSK модуляция
Цель работы
Теоретическая часть
Лабораторное задание
Список минимально необходимых команд SciLAB
Контрольные вопросы
Лабораторная работа №3
Цифровые виды модуляции, OFDM
Цель работы
Теоретическая часть
Лабораторное задание
Список минимально необходимых команд SciLAB
Контрольные вопросы
Литература
0
Заблокирован
23.01.2016, 07:20  [ТС] 3
Три вида сигналов - синусоидальный, прямоугольный, треугольный.

Хорошо поясняется всё многообразие форм сигнала на сайте Формы и характеристики электрических сигналов, где приводятся: синусоидальный, меандр, прямоугольный, треугольный, пилообразный, импульсы и запускающие сигналы (триггеры).

Например, смотрите рисунок ниже для треугольного сигнала.

Смотрим книгу: Б.И. Филиппов. Теория электрической связи. Учебное пособие. Новосибирск-2011
Три метода модуляции сигналов - амплитудная, фазовая и частотная.

На стр. 15 — методы модуляции, рисунок ниже.
Миниатюры
Обработка сигналов и изображений на SciLab   Обработка сигналов и изображений на SciLab  
0
Заблокирован
23.01.2016, 08:03  [ТС] 4
У меня установлен SciLab 5.5.0, на котором даю пояснения — как могу и умею.
Первый блин комом! SciLab не всё понимает из кода MatLab! Друзья, что делать?!

Как аналог кода использовал Пример 2 от А. Б. Сергиенко "Цифровая модуляция".

Ввожу код
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
// соответствующий код
N = 10000; // число передаваемых бит
x = randint(N, 1); // цифровое сообщение
M = 2; // двоичнаЯ манипулЯциЯ
Fd = 300; // символьнаЯ скорость
Fs = 9600; // частота дискретизации
f0 = 1180; // частота “нуля”
f1 = 980; // частота “единицы”
Fc = (f0 + f1) / 2; // среднЯЯ частота
tone = f1 – f0; // разнос частот
s = dmod(x, Fc, Fd, Fs, 'fsk', M, tone); // манипулированный сигнал
snr = -10:10; // вектор отношений С/Ш (в децибелах)
for k = 1:length(snr)
sn = awgn(s, snr(k), 'measured'); // добавлЯем шум
// когерентнаЯ демодулЯциЯ
y_c = ddemod(sn, Fc, Fd, Fs, 'fsk', M, tone);
// некогерентнаЯ демодулЯциЯ 
y_nc = ddemod(sn, Fc, Fd, Fs, 'fsk/noncoherence', M, tone);
// расчет вероЯтностей ошибок
[n_err, er_c(k)] = symerr(x, y_c);
[n_err, er_nc(k)] = symerr(x, y_nc);
end
// вывод графика
semilogy(snr, er_c, snr, er_nc)
Ответ SciLab 5.5.0, он просит пояснений недопонимает часть кода MatLab
Matlab M
1
2
3
4
5
6
-->exec('C:\Users\admin\Documents\Спецпапка для сервера\BBB.sce', -1)
x = randint(N, 1); // цифровое сооÐ
                  !--error 4 
Неизвестная переменная: randint
at line       3 of exec file called by :    
вера\BBB.sce', -1
Ему непонятно только два слова. Как быть?
Миниатюры
Обработка сигналов и изображений на SciLab  
0
7 / 7 / 2
Регистрация: 09.09.2012
Сообщений: 73
23.01.2016, 10:31 5
вместо randint воткните int(rand(N,1)*N) - матрица случайных чисел от 0 до N
exec ('...',-1) - что за -1 ? В хэлпе такого нет.
1
Заблокирован
23.01.2016, 11:04  [ТС] 6
Цитата Сообщение от AlexKazancev Посмотреть сообщение
вместо randint воткните int(rand(N,1)*N) - матрица случайных чисел от 0 до N
exec ('...',-1) - что за -1 ? В хэлпе такого нет.
AlexKazancev, спасибо за помощь! Про (-1) ничего пока не знаю, только полчаса назад скачал книгу: Е. Р. Алексеев, Е. А. Чеснокова, Е. А. Рудченко. Scilab: Решение инженерных и математических задач. Библиотека ALT Linux

Ввожу исправленный код:
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
// соответствующий код
N = 10000; // число передаваемых бит
x = int(rand(N,1)*N); // цифровое сообщение
M = 2; // двоичнаЯ манипулЯциЯ
Fd = 300; // символьнаЯ скорость
Fs = 9600; // частота дискретизации
f0 = 1180; // частота “нуля”
f1 = 980; // частота “единицы”
Fc = (f0 + f1) / 2; // среднЯЯ частота
tone = f1 – f0; // разнос частот
s = dmod(x, Fc, Fd, Fs, 'fsk', M, tone); // манипулированный сигнал
snr = -10:10; // вектор отношений С/Ш (в децибелах)
for k = 1:length(snr)
sn = awgn(s, snr(k), 'measured'); // добавлЯем шум
// когерентнаЯ демодулЯциЯ
y_c = ddemod(sn, Fc, Fd, Fs, 'fsk', M, tone);
// некогерентнаЯ демодулЯциЯ 
y_nc = ddemod(sn, Fc, Fd, Fs, 'fsk/noncoherence', M, tone);
// расчет вероЯтностей ошибок
[n_err, er_c(k)] = symerr(x, y_c);
[n_err, er_nc(k)] = symerr(x, y_nc);
end
// вывод графика
semilogy(snr, er_c, snr, er_nc)
Опять ему не так, тянет жилы из меня:
Matlab M
1
2
3
4
5
6
exec('C:\Users\admin\Documents\Спецпапка для сервера\BBB.sce', -1)
tone = f1 – f0; // разнос частот
            !--error 2 
Неправильный множитель.
at line      10 of exec file called by :    
вера\BBB.sce', -1
Миниатюры
Обработка сигналов и изображений на SciLab  
0
Заблокирован
23.01.2016, 11:55  [ТС] 7
Попробовал заменить: tone = f1 – f0; —> Fn = f1 – f0; —> затем пытался —> Ft = f1 – f0; (в четырёх местах!)
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
// соответствующий код
N = 10000; // число передаваемых бит
x = int(rand(N,1)*N); // цифровое сообщение
M = 2; // двоичнаЯ манипулЯциЯ
Fd = 300; // символьнаЯ скорость
Fs = 9600; // частота дискретизации
f0 = 1180; // частота “нуля”
f1 = 980; // частота “единицы”
Fc = (f0 + f1) / 2; // среднЯЯ частота
Ft = f1 – f0; // разнос частот
s = dmod(x, Fc, Fd, Fs, 'fsk', M, Ft); // манипулированный сигнал
snr = -10:10; // вектор отношений С/Ш (в децибелах)
for k = 1:length(snr)
sn = awgn(s, snr(k), 'measured'); // добавлЯем шум
// когерентнаЯ демодулЯциЯ
y_c = ddemod(sn, Fc, Fd, Fs, 'fsk', M, Ft);
// некогерентнаЯ демодулЯциЯ 
y_nc = ddemod(sn, Fc, Fd, Fs, 'fsk/noncoherence', M, Ft);
// расчет вероЯтностей ошибок
[n_err, er_c(k)] = symerr(x, y_c);
[n_err, er_nc(k)] = symerr(x, y_nc);
end
// вывод графика
semilogy(snr, er_c, snr, er_nc)

Всё равно ему не нравится. Почему?
Matlab M
1
2
3
4
5
6
exec('C:\Users\admin\Documents\Спецпапка для сервера\BBB.sce', -1)
Ft = f1 – f0; // разнос частот
          !--error 2 
Неправильный множитель.
at line      10 of exec file called by :    
вера\BBB.sce', -1
Понимаю, Scilab не любит: када многа букафф… как найти с ним общий язык?! Вконец замучил капризами.
Миниатюры
Обработка сигналов и изображений на SciLab  
0
Заблокирован
23.01.2016, 12:13  [ТС] 8
Модераторы, пожалуйста, удалите картинку с поста #7. Она совершенно из другой темы. Так получилось, сильно переживал и по рассеянности её отправил. Хотел удалить, но не успел по времени.
0
Заблокирован
23.01.2016, 12:34  [ТС] 9
Планы у меня такие. Сейчас отдохну 2-3 часа. Потом посмотрю примеры решений, которые предлагает Scilab, ниже на картинке. Как-то надо выходить из тупика.
Миниатюры
Обработка сигналов и изображений на SciLab  
0
7 / 7 / 2
Регистрация: 09.09.2012
Сообщений: 73
23.01.2016, 13:29 10
Из Хэлпа exec('name') - без всяких -1 и прочих включений. Удалите ,-1 из exec

Добавлено через 9 минут
Fortran
1
2
3
4
f0 = 1180; // частота “нуля”
f1 = 980; // частота “единицы”
Fc = (f0 + f1) / 2; // среднЯЯ частота
Ft = f1-f0; // разнос частот
С символами всё ОК? вот это работает
0
Заблокирован
23.01.2016, 16:52  [ТС] 11
Цитата Сообщение от AlexKazancev Посмотреть сообщение
Из Хэлпа exec('name') - без всяких -1 и прочих включений. Удалите ,-1 из exec
AlexKazancev, как удалить? Что и откуда? Выражайтесь понятнее, совсем не понимаю о чём пишете? Где этот Хэлп exec('name') даже не представляю. По-прежнему код не работает.

Может есть более умные решения. Сердце подсказывает надо сделать конверсию кода МатЛаб в Сайлеб, как на рисунке ниже.
Миниатюры
Обработка сигналов и изображений на SciLab  
0
Заблокирован
23.01.2016, 18:57  [ТС] 12
Похоже, Scilab не нравится само обозначение файла *.sce'. Попробовал: *.sci, *.sc — толку нет. Смотрите на апостроф, метка самого Scilab: '.
(Что означает?) Неправильный множитель.
at line 10 of exec file called by :
ts\Scilab\BBB.sce', -1

— в строке 10 выполняемого файла называли: TS \ Scilab \ BBB. sce' , -1

Пытаюсь докопаться до сути. Смотрите две картинки внизу.

Cоздаю файл MMM.m вроде как от MatLab, как аналог кода использовал всё тот же Пример 2 от А. Б. Сергиенко "Цифровая модуляция".
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
// соответствующий код
N = 10000; // число передаваемых бит
x = randint(N, 1); // цифровое сообщение
M = 2; // двоичнаЯ манипулЯциЯ
Fd = 300; // символьнаЯ скорость
Fs = 9600; // частота дискретизации
f0 = 1180; // частота “нуля”
f1 = 980; // частота “единицы”
Fc = (f0 + f1) / 2; // среднЯЯ частота
tone = f1 – f0; // разнос частот
s = dmod(x, Fc, Fd, Fs, 'fsk', M, tone); // манипулированный сигнал
snr = -10:10; // вектор отношений С/Ш (в децибелах)
for k = 1:length(snr)
sn = awgn(s, snr(k), 'measured'); // добавлЯем шум
// когерентнаЯ демодулЯциЯ
y_c = ddemod(sn, Fc, Fd, Fs, 'fsk', M, tone);
// некогерентнаЯ демодулЯциЯ 
y_nc = ddemod(sn, Fc, Fd, Fs, 'fsk/noncoherence', M, tone);
// расчет вероЯтностей ошибок
[n_err, er_c(k)] = symerr(x, y_c);
[n_err, er_nc(k)] = symerr(x, y_nc);
end
// вывод графика
semilogy(snr, er_c, snr, er_nc)
Новый файл в Notepad++ выглядит так, якобы после преобразования:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
****** Начало сессии mfile2sci() ******
   Файл для преобразования: C:/Users/admin/Documents/Scilab
 /MMM.m
   Путь к файлу результатов: C:/Users/admin/Documents/Scila
 b/
   Рекурсивный режим: ВЫКЛ
   Только числовые значения использованы в M-
 file: НЕТ
   Режим расширенного вывода: 3
   Форматировать код программы: НЕТ
   Чтение M-файла...
   Чтение M-файла: Готово
   Изменение синтаксиса...
   Изменение синтаксиса: Готово
Мой друг Scilab как обычно недоволен, начинаю догадываться, что же он хочет — пишет мне… ёпрст… и далее:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  ****** Начало сессии mfile2sci() ******
  Файл для преобразования: C:/Users/admin/Documents/Scilab/MMM.m
  Путь к файлу результатов: C:/Users/admin/Documents/Scilab/
  Рекурсивный режим: ВЫКЛ
  Только числовые значения использованы в M-file: НЕТ
  Режим расширенного вывода: 3
  Форматировать код программы: НЕТ
  Чтение M-файла...
  Чтение M-файла: Готово
  Изменение синтаксиса...
  Изменение синтаксиса: Готово
tone = f1 – f0; ;// разнос частоÑ
            !--error 2 
Неправильный множитель.
at line      18 of function MMM called by :  
endfunction
at line      47 of exec file called by :    
 
at line     203 of function mfile2sci called by :  
at line     142 of function cb_m2sci_gui called by :  
getcallbackobject(170);cb_m2sci_gui;if exists(
while executing a callback
Ладно, сейчас сделаю полное преобразование. Получилось выше частичное!
Миниатюры
Обработка сигналов и изображений на SciLab   Обработка сигналов и изображений на SciLab  
0
Заблокирован
23.01.2016, 23:31  [ТС] 13
Цитата Сообщение от AlexKazancev Посмотреть сообщение
Из Хэлпа exec('name') - без всяких -1 и прочих включений. Удалите ,-1 из exec
AlexKazancev, помогите, пожалуйста. С ног сбился, ничего не получается. Не могу удалить (-1).
0
Эксперт С++
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
24.01.2016, 04:46 14
Лучший ответ Сообщение было отмечено Kravtsov_18 как решение

Решение

Цитата Сообщение от Kravtsov_18 Посмотреть сообщение
Всё равно ему не нравится. Почему?
Matlab M
1
2
3
4
5
6
exec('C:\Users\admin\Documents\Спецпапка для сервера\BBB.sce', -1)
Ft = f1 – f0; // разнос частот
          !--error 2 
Неправильный множитель.
at line      10 of exec file called by :    
вера\BBB.sce', -1
В выражении f1 – f0 записан не минус, а тире (например как результат копирования из PDF). Замени минусом.
Цитата Сообщение от Kravtsov_18 Посмотреть сообщение
AlexKazancev, помогите, пожалуйста. С ног сбился, ничего не получается. Не могу удалить (-1).
Да не надо ничего удалять. Этот -1 добавляет сам scilab при запуске, это "тихий" режим исполнения.
0
Заблокирован
24.01.2016, 05:49  [ТС] 15
Цитата Сообщение от grizlik78 Посмотреть сообщение
Да не надо ничего удалять.
grizlik78, огромное спасибо!

Если нетрудно, то, пожалуйста, отредактируйте остальные 14 строк до конца.

SciLab новую песню запел "Неизвестная переменная" на старый мотив:
Matlab M
1
2
3
4
5
6
-->exec('C:\Users\admin\Documents\Scilab\ПРИМЕР 2\BBB.sce', -1)
, Fd, Fs, 'fsk', M, Ft); // манипулир
                        !--error 4 
Неизвестная переменная: dmod
at line      11 of exec file called by :    
МЕР 2\BBB.sce', -1
0
Эксперт С++
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
24.01.2016, 08:43 16
Аналогов функций dmod, ddemod, symerr в scilab не видать. Скорее всего их придётся реализовывать самостоятельно.
0
24.01.2016, 08:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2016, 08:43
Помогаю со студенческими работами здесь

JavaScript to Scilab ( and Algorithm Pseudocode) Перевод с JavaScript в Scilab. C псевдокода в Scilab
function diff_sort_arr(array_1,array_2, set_value) { var n = array_1.length, m =...

Обработка изображений. Изменение размеров изображений
Подскажите пожалуйста, как изменить размер изображения в MathCad. Какой код нужен для...

Обработка сигналов
Здравствуйте, подскажите, пожалуйста, какие-нибудь статьи, источники посмотреть для такой задачи:...

Обработка сигналов
Привет всем! Написал следующий код: void func(int sig, siginfo_t* sinfo, void *_addinfo) {...


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

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