Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
 Аватар для Constanti
0 / 0 / 0
Регистрация: 23.04.2017
Сообщений: 24
Matlab 2017

Огибающая и ВЧ заполнение

27.03.2018, 20:00. Показов 3040. Ответов 6

Студворк — интернет-сервис помощи студентам
У меня есть М - последовательность, которую я использую в качестве огибающей сигнала, и высокочастотное заполнение, которое я должен использовать для исследования характеристик. Формирую М последовательность стандартной функцией Матлаба, но не могу связать М последовательность (длинной N) и ВЧ составляющую (длительностью ts).
Как связать два сигнала, один из которых задан отсчётами N, а другой зависит от времени t, и оба имеют разное количество отсчётов (30 для М - последовательности и 101 для ВЧ заполнения)?

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
clc;
clear;
clear all;
%% Входные данные
ts = 1;
f = 50;
dt = 1/(2*f);
t = 0:dt:ts;
x = cos(2*pi*f*t);
%% Создание объектов М - последовательности
N = 30;
n = 1:N;
MO = comm.PNSequence('Polynomial', [10 7 0], 'SamplesPerFrame', N, 'InitialConditions', ...
[0 0 0 0 0 0 0 0 0 1]);  
%% Формирование M-последовательности
MS = step(MO);  
%% Преобразование последовательности из однополярной в биполярную
MS = 1 - 2.*MS; % М - последовательность 
%% Транспонирование М - последовательности и перемножение с ВЧ составляющей
MS_transp = MS';
y = MS_transp.*x;
plot(y);
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.03.2018, 20:00
Ответы с готовыми решениями:

огибающая
как по коэффициентам разложения в ряд фурье построить огибающую?

Комплексная огибающая
Вопрос знатокам - как из обычного цифрового сигнала получить его комплексную огибающую? Заранее спасибо)

Амплитудная огибающая
Здравствуйте. Может кто подскажет? Необходимо построить амплитудную огибающую. Наткнулся на информацию, что это модуль аналитического...

6
48 / 37 / 18
Регистрация: 15.09.2012
Сообщений: 191
28.03.2018, 09:37
Сейчас нету времени разбираться Если в двух словах, то:
1. В 8й строчке интервал должен заканчиваться ts-td.
2. В 9й строчке
Matlab M
1
 x = cos(2*pi*f.*t)
не обязательно, но привыкайте правильно писать.

Чтобы получить результат, которого Вы хотите, передескритезируйте ваши отсчеты М-последовательности. Вы должны выравнять длины! Для этого используйте функцию upsample, затем прогоните результат через фильтр с единичной ИХ длинной в количество импульсов в символе после дискретизации пример фильтра
Matlab M
1
filter(ones(1,x),1,M-последовательность)
, где х - длина ИХ. Вот на первый взгляд примерно так. Может вечером подробнее для вашего случая напишу, но не обещаю
0
164 / 134 / 61
Регистрация: 16.05.2015
Сообщений: 372
28.03.2018, 11:10
Constanti, Sniper53, Мне кажется, что Вы заблуждаетесь.
По определению, М-последовательность есть периодическая псевдослучайная последовательность состоящая из символов 0 и 1, с периодом равным (2^n) - 1. (Где n - степень полинома, используемого для ее генерации (в Вашем случае n=10)).

Функция upsample понатыкает нулей между отсчетами, нарушив тем самым условие псевдослучайности. Есть и еще одно ограничение. Период последовательности должен содержать количество символов 1, на единицу превышающее количество символов 0. Данное условие также будет нарушено. О последствиях фильтрации последовательности из 0 и 1 я даже боюсь думать.

В Вашем случае период последовательности равен 2^10 - 1 = 1023 символа. Метод step возвращает столько символов последовательности, сколько заявлено в параметре SamplesPerFrame (N=30, в Вашем случае). Вам, как я понимаю, необходима последовательность длиной 101 символ. Ну так и получите ее задав соответствующее значение для N. Если потребуется последовательность с длиной больше чем период сгенерированной последовательности, то: либо перегенерируйте, увеличив степень полинома, либо повторите ее столько раз, сколько необходимо (помните, М-последовательность это периодическая последовательность).
https://ru.wikipedia.org/wiki/... 1%82%D1%8C
https://uk.mathworks.com/help/... bject.html
1
48 / 37 / 18
Регистрация: 15.09.2012
Сообщений: 191
29.03.2018, 16:36
Лучший ответ Сообщение было отмечено Constanti как решение

Решение

Цитата Сообщение от ida2 Посмотреть сообщение
Функция upsample понатыкает нулей между отсчетами
Естественно! Которые потом уберутся фильтрацией, в противном случае я не знаю как Вы хотите перемножить ВЧ колебание с М - последовательностью! Необходимо сравнять количество отсчетов в двух массивах! Это обыкновенная BPSK модуляция
Цитата Сообщение от ida2 Посмотреть сообщение
нарушив тем самым условие псевдослучайности.
Почему?
Цитата Сообщение от ida2 Посмотреть сообщение
О последствиях фильтрации последовательности из 0 и 1 я даже боюсь думать.
Последовательность далее представляется в NRZ коде!
Цитата Сообщение от ida2 Посмотреть сообщение
Метод step возвращает столько символов последовательности, сколько заявлено в параметре SamplesPerFrame (N=30, в Вашем случае).
Параметр 'SamplesPerFrame' в общем случае определяет количество генерируемых отсчетов в результирующей последовательности!

Добавлено через 19 минут
Constanti, Вот Ваш вариант подправленный до рабочего состояния:

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
clc; close all; clear all;
%% Входные данные
ts = 1;
f = 50;
dt = 1/(2*f);
t = 0:dt:ts-dt;
x = cos(2*pi*f*t);
%% Создание объектов М - последовательности
N = 30;
n = 1:N;
MO = comm.PNSequence('Polynomial', [10 7 0], 'SamplesPerFrame', N,  'InitialConditions', ...
[0 0 0 0 0 0 0 0 0 1]);  
%% Формирование М - последовательности
MS = step(MO);  
%% Преобразование в NRZ
MS = 1 - 2.*MS; % М - последовательность
 
MS = upsample(MS,3);
MS = filter(ones(1,3),1,MS);
MS = [MS' ones(1,10)];
%% Перемножение с несущей частотой
y = MS.*x;
plot(t,y);
И вот Ваш же вариант, немного видоизмененный для красоты картинки результирующей! А то как то представлять синусоиду 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
clc; close all; clear all;
%% Входные данные
ts = 0.6;
f = 50;
dt = 1/(100*f);
t = 0:dt:ts-dt;
x = cos(2*pi*f.*t);
%% Создание объектов М - последовательности
N = 30;
n = 1:N;
MO = comm.PNSequence('Polynomial', [10 7 0], 'SamplesPerFrame', N,  'InitialConditions', ...
[0 0 0 0 0 0 0 0 0 1]);  
%% Формирование М - последовательности
MS = step(MO);  
%% Преобразование в NRZ
MS = 1 - 2.*MS; % М - последовательность
MS = upsample(MS,100);
MS = filter(ones(1,100),1,MS).';
 
%% Перемножение с несущей частотой
y = MS.*x;
plot(t,y);
Пы. Сы. Если изменить косинус на синус, будет еще красивее
1
164 / 134 / 61
Регистрация: 16.05.2015
Сообщений: 372
29.03.2018, 20:02
Цитата Сообщение от Sniper53 Посмотреть сообщение
Параметр 'SamplesPerFrame' в общем случае определяет количество генерируемых отсчетов в результирующей последовательности!
Противопоставлю цитату их хелпа:
Number of outputs per frame
Specify the number of PN sequence samples that the step method outputs as a numeric, positive, integer scalar value. The default is 1. If you set this property to a value of M, then the step method outputs M samples of a PN sequence that has a period of N=2^n −1. The value n represents the degree of the generator polynomial that you specify in the Polynomial property. If you set the BitPackedOutput property to false, the samples are bits from the PN sequence. If you set the BitPackedOutput property to true, then the output corresponds to SamplesPerFrame groups of bit-packed samples.
Т.о. на гора будет выдано такое количество отсчетов, какое попросили в параметре 'SamplesPerFrame'. Эти отсчеты будут повторяться с периодом 2^n −1, где n - степень полинома. Это я к тому, что не нужно городить огород с искусственным повышением частоты дискретизации, а достаточно сразу получить последовательность требуемой длины.

Цитата Сообщение от Sniper53 Посмотреть сообщение
Почему?
М-последовательность генерируется таким образом, что символы 0 и 1 на протяжении одного периода имеют равномерное распределение (в смысле распределение вероятности). Та последовательность, которая получается после upsample ну никак не похожа на равномерное распределение. Если этот момент не важен, то зачем тогда вообще заморачиваться с М-последовательностью? Проще взять меандр.

Вот первый вариант Sniper53, но без интерполяции:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
clc; close all; clear all;
%% Входные данные
ts = 1;
f = 50;
dt = 1/(2*f);
t = 0:dt:ts-dt;
x = cos(2*pi*f*t);
%% Создание объектов М - последовательности
N = 100;
n = 1:N;
MO = comm.PNSequence('Polynomial', [10 7 0], 'SamplesPerFrame', N,  'InitialConditions', ...
[0 0 0 0 0 0 0 0 0 1]);  
%% Формирование М - последовательности
MS = step(MO);  
%% Преобразование в NRZ
MS = 1 - 2.*MS; % М - последовательность
MS = MS';
%% Перемножение с несущей частотой
y = MS.*x;
plot(t,y);
И чем он хуже?

Добавлено через 2 часа 19 минут
Sniper53,
Прочел все с самого начала, похоже начал прозревать
Выходит, что М-последовательность длиной именно 30 отсчетов нам дана по условию задачи, и отойти от этого мы не можем. Тогда с помощью строк
Matlab M
1
2
MS = upsample(MS,3);
MS = filter(ones(1,3),1,MS);
Вы просто увеличиваете ширину каждого символа последовательности в соответствующее число раз, что и дает в результате последовательность требуемой длины.
Если так, то пардон.
1
48 / 37 / 18
Регистрация: 15.09.2012
Сообщений: 191
30.03.2018, 08:45
Цитата Сообщение от ida2 Посмотреть сообщение
Т.о. на гора будет выдано такое количество отсчетов, какое попросили в параметре 'SamplesPerFrame'. Эти отсчеты будут повторяться с периодом 2^n −1, где n - степень полинома. Это я к тому, что не нужно городить огород с искусственным повышением частоты дискретизации, а достаточно сразу получить последовательность требуемой длины.
Ну так Вы сами ответили на вопрос, что это количество выводимых отсчетов. В случае если параметр превышает длину последовательности, отсчеты будут повторяться с периодом 2^n-1. Но данный параметр должен быть меньше 2147483647 отсчетов

Цитата Сообщение от ida2 Посмотреть сообщение
И чем он хуже?
В вашем случае частота информационной (м-последовательности) в два раза выше частоты ВЧ-колебания

Цитата Сообщение от ida2 Посмотреть сообщение
Вы просто увеличиваете ширину каждого символа последовательности в соответствующее число раз, что и дает в результате последовательность требуемой длины.
Естественно. Я думаю тут и отпал вопрос о псевдослучайности м-последовательности, по сути мы просто уменьшили скорость следования импульсов.
0
164 / 134 / 61
Регистрация: 16.05.2015
Сообщений: 372
30.03.2018, 09:26
Sniper53, Да, разобрался, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.03.2018, 09:26
Помогаю со студенческими работами здесь

Огибающая семейства окружностей
Добрый день, может быть кто-то в силах помочь. Найдите огибающую семейства окружностей радиуса r, центры которых описывают окружность...

"огибающая" поверхность пространственной спирали
В случае когда в линейной системе 3 дифф ур 2 собственные числа комплексные с Re <0 , а 3-е собств.число >0 фазовые траектории...

Как сделать чтобы Заполнение одного значения формы вызывало заполнение множества других
Народ помогите чтобы при выставлении значения в ячейке формы КПКНазв (основана на табл.Договора) в форму проставлялись значения из таблицы...

Заполнение ТЧ одного документа ТЧ другого, заполнение тч из запроса
&НаСервере Процедура ЗаполнитьНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ...

Заполнение документа из тч справочника, заполнение при изменении()
&НаСервере Процедура ПолучитьПродукты(Выборка) Выборка=Справочники.Блюда.Выбрать(); Пока Выборка.Следующий() Цикл НоваяСтрока =...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru