Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.75/48: Рейтинг темы: голосов - 48, средняя оценка - 4.75
 Аватар для 1Ra2
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 16

Спектр шумоподобного сигнала

16.12.2012, 10:13. Показов 11188. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!
С Вашей помощью написала простенькую программу для формирования широкополосного сигнала, но сомневаюсь
в "адекватности" полученного спектра-почему в нем два пика?
пожаалуйста,объясните)
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
clc;
 y=[1 1 0 0 1 1 0];%ввод информационной посылки
 b=length(y); 
x = [0 0 1 1 1]; % начальная комбинация 
%для формирующего полинома М-последовательности
Otvet= [];
M15 = x;
n = length(x);
N = 2^n - 1;
for i= n+1:N
    M15(end+1) = xor(M15(end),M15(end-2)); % Формирующий полином
    %(описывается механизм генерации М-последовательности)
end
for k=1:(2^n-1);
    M51(k)=xor(M15(k),1);%инвертированная М-последовательнось
end
%присвоение каждому символу информационной посылки соответствующего периода 
%М-последовательности и формирование общей расширенной последовательности
 for j = 1:b;
    if y(j)==1  
       for z=1:(2^n-1)
           Otvet(end+1)=M51(z);
       end
    end
            if y(j)==0 
for z=1:(2^n-1)
 Otvet(end+1)=M15(z);
 
 
  end
end
 end
Otvet = 2*Otvet - 1 %расширенная последовательность приводится  к виду [-1, 1]
figure;
plot( xcorr(Otvet,Otvet) ) %отображается АКФ М-последователности
grid on
 legend ('АКФ М-последовательности')
T = 0.1;%задается длительность одного чипа М-последовательности
f = 15; %задается значение несущейчастоты
 
t = 0:T/(N-1):(N-1)*b*T; % границы отрезка времени
%генерация меандрового сигнала
T1=T;
F1=1/T1;
 
A1=1;
N1=b*(N-1);
dt=T1/N1;
t1=t;
s1=square(2*pi*t1*F1)*A1;
figure;
plot(t1,s1);
grid off;
legend ('меандр')
axis([0 N*T -2 2]);
 
 
F = Otvet( fix (t./T)+1); % Временные значения М-последовательности
D=s1(fix(t./(0.05*T))+1);
for a=1:length(F);
K(a)=F(a)*D(a);
end
 
J=K(fix(t./(0.05*T))+1);
S = J.*cos( 8*pi*f*t  + 3*pi/2); % генерация широкополосного сигнал
 figure % построение графика широкополосного сигнала вместе 
 %с модулирующей последовательностью и М-последовательностью
 s1=s1(1:length(F));
 
 
 
 plot(t,S,'g',...
     t,F,'b',...
     t1,J,'k');
 
grid on
axis ([0 N*T -2 2])
%построение спектров
ff=t;
spektrM=fftshift(abs(fft(F)));
spektrS=fftshift(abs(fft(S)));
figure;
plot(ff,spektrM,'g');
grid on;
legend ('спектр М-последовательности')
figure;
plot(ff,spektrS,'b');
grid on;
legend ('спектр широкополосного сигнала')
figure;
plot(xcorr(J,J),'r');
grid on;
legend ('АКФ последовательности')
figure;
plot (xcorr(S,S),'k');
grid on
legend ('АКФ сигнала')
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.12.2012, 10:13
Ответы с готовыми решениями:

Генератор шумоподобного сигнала в Матлаб
Доброго времени суток всем! Я - студент 5го курса. Пишу диплом на тему "Реализация полосного вокодера в среде Матлаб". Испытываю...

Спектр сигнала
Написал программу, рассчитывающую спектр сигнала: f=50; t=0:1/1024:0.1; y=sin(2*pi*f*t); figure (1); plot(t,y) s=fft(y); ...

Спектр сигнала
Здравствуйте, построил спектр сигнала по Фурье. Подскажите, что можно определить из данного графика?

36
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
17.12.2012, 21:03
Студворк — интернет-сервис помощи студентам
1Ra2, я же писал - метод вполне рабочий, хоть и нестандартный. А можете рассказать, для чего планируется использовать данный метод? Если для системы связи, то какой канал передачи данных будет использоваться? Или задание было просто сгенерировать сферический сигнал с расширенным спектром в вакууме, без объяснений его полезности?
0
 Аватар для 1Ra2
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 16
17.12.2012, 21:53  [ТС]
Впрочем,глупый вопрос.Не имеет.

Добавлено через 23 минуты
Целью было рассмотрение свойств BOC - сигнала и его моделирование.
Запуталась окончательно.
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
17.12.2012, 21:56
Цитата Сообщение от 1Ra2 Посмотреть сообщение
Запуталась окончательно
почему? Я думал наоборот все вопросы разъяснились) А что еще не понятно?
0
 Аватар для 1Ra2
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 16
17.12.2012, 22:05  [ТС]
Запуталась с кодом. Пытаюсь внести поправки в генератор, но тогда "накрываются" все дальнейшие вычисления.
я думаю,я и с ФМн сигналом натворила дел.
Спасибо за Вашу неоценимую помощь!!
0
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 3
04.02.2013, 10:37
Большое спасибо,
Буду внедряться в тему.
У меня кстати тоже Матлаб старенький, 2007 года.
Уще раз спасибо!
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
04.02.2013, 13:22
странно, когда обсуждалась эта тема, я не заметил эту фразу:
Цитата Сообщение от Зосима Посмотреть сообщение
Собственно, если память не изменяет, это и есть коды Рида-Соломона
Конечно же это не так, хотя теория м-последовательностей и рс-кодов происходит из одной ветви - линейных циклических кодов. Код Рида-Соломона это подкласс БЧХ кодов, которые строятся с помощью порождающего полинома над полем характеристики не равной 2, то есть это недвоичные коды. А м-последовательность можно считать циклическим кодом, исправляющим все ошибки в информационных символах, за счет внесения максимально возможной избыточности. Так что называть м-последовательности рс-кодами мягко говоря неправильно...
2
 Аватар для 1Ra2
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 16
23.10.2013, 18:08  [ТС]
Зосима, привет))
скажи пожалуйста,почему начальное состояние регистра не влияет на результат?
и не странныйли спектр у м-последовательности?
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
function [mSeq, reg] = MSeqGenerator(MSeqPower2, initialRegister, PolynomNumber)
% Генератор М-последовательности для степеней двойки от 3 до 12
% Входные параметры:
 MSeqPower2=12;
 initialRegister=[1 1 0 1 1 1 1 1 1 1 1 1];
 PolynomNumber=2;% - номер генераторного полинома из таблицы (по умолчанию = 1)
% Выходные параметры:
% mSeq - полученная М-последовательность в двоичном виде, длинна % 2^MSeqPower2-1
% reg - содержимое регистра после генерации
 
if nargin<3 % если номер полинома не указан
    PolynomNumber = 1; % берем первый
end
 
% генераторные полиномы для различных степеней в десятичном виде
Polies = { 0;... % 1
    0;... % 2
    [ 5, 6 ];... % Polies3 =
    [ 9, 12 ];... % Polies4 =
    [ 18, 20, 23, 27, 29, 30 ];... % Polies5 =
    [ 33, 45, 48, 51, 54, 57 ];... % Polies6 =
 
    [ 65, 68, 71, 72, 78, 83, 85, 92, 95, 96, 101, 105,... % Polies7 =
    106, 114, 119, 120, 123, 126 ];...
 
    [ 142, 149, 150, 166, 175, 177, 178, 180, 184, 195,... % Polies8 =
    198, 212, 225, 231, 243, 250 ];...
 
    [ 264, 269, 272, 278, 281, 300, 303, 308, 311, 315,... % Polies9 =
    318, 323, 330, 337, 338, 343, 347, 350, 359, 360,...
    365, 378, 380, 393, 394, 399, 401, 408, 413, 423,...
    429, 432, 437, 438, 441, 447, 450, 455, 474, 476,...
    483, 485, 486, 490, 492, 497, 500, 509 ];...
 
    [ 516, 525, 531, 534, 562, 567, 576, 581, 610, 619,... % Polies10 =
    627, 633, 639, 646, 652, 657, 664, 670, 673, 683,...
    693, 706, 711, 715, 720, 739, 754, 763, 765, 777,...
    778, 786, 795, 801, 807, 813, 828, 831, 836, 858,...
    864, 873, 879, 894, 907, 910, 912, 924, 931, 934,...
    938, 940, 945, 958, 966, 969, 984, 1005, 1017, 1020 ];...
 
    [ 1280, 1856, 1808, 1794, 1696, 1665, 1604, 1602,... % Polies11 =
    1584, 1548, 1542, 1440, 1416, 1412, 1352, 1346,...
    1328, 1316, 1300, 1192, 1188, 1136, 1128, 1992,...
    1985, 1944, 1932, 1925, 1873, 1865, 1848, 1834,...
    1829, 1827, 1820, 1817, 1813, 1806, 1776, 1764,...
    1748, 1737, 1720, 1713, 1708, 1706, 1686, 1678,...
    1652, 1649, 1642, 1641, 1638, 1614, 1508, 1482,...
    1458, 1452, 1400, 1396, 1386, 1340, 1260, 2036,...
    2034, 2025, 2022, 2010, 2006, 2003, 1997, 1995,...
    1978, 1974, 1973, 1966, 1947, 1916, 1913, 1902,...
    1885, 1854, 1853, 1786, 1773, 1758, 1526, 1518 ];...
 
    [ 3592, 3586, 3232, 3144, 2820, 2584, 2448, 2400,... % Polies12 =
    2224, 3976, 3880, 3874, 3852, 3850, 3780, 3778,...
    3752, 3745, 3729, 3715, 3684, 3682, 3666, 3651,...
    3622, 3552, 3528, 3465, 3461, 3440, 3432, 3397,...
    3380, 3353, 3300, 3288, 3250, 3226, 3164, 3118,...
    3040, 3012, 2978, 2956, 2954, 2898, 2860, 2858,...
    2786, 2516, 2508, 2488, 4068, 4044, 4024, 3987,...
    3981, 3953, 3911, 3897, 3891, 3770, 3757, 3705,...
    3677, 3561, 3450, 3294, 3030, 3002, 4062, 4061 ];...
    };
 
if (MSeqPower2 == 1) || (MSeqPower2 == 2) % если степень меньше 3
    mSeq = []; % ошибка, нет таких последовательностей
    return;
end
 
% длинна последовательности
MSequenceLength = 2^MSeqPower2-1;
 
poly = Polies{MSeqPower2}(PolynomNumber);
 
poly = poly*2+1; % 1 on zero position (low bit)
 
P = uint16(bitand(poly, MSequenceLength-1));
if nargin < 3
    Register    = uint16(MSequenceLength);
else
    Register    = uint16(initialRegister);
end
mSeq = zeros(MSequenceLength,1);
 
reg = [];
 
for SymbPos = 1 : MSequenceLength
    mSeq(SymbPos) = bitand(Register, 1);
    if mSeq(SymbPos) ~= 0
        Register = bitor(Register, MSequenceLength+1);
        Register = bitxor(Register, P);
    end
    Register = bitshift(Register, -1);
    reg = [reg Register];
   
end
 display(mSeq);
 
 T=mSeq*2-1;
 display(T);
 figure(1)
 plot(xcorr(T,T));
 Fs=10000;
Fd=100;
y=pskmod(mSeq,2);
s=rcosflt(y,Fd,Fs);
figure(2);
plot(real(s));
figure(3)
plot(fftshift(abs(fft(mSeq))));
end
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
23.10.2013, 20:10
1Ra2, О! какие люди! Привееет, заяц!

Сегодня, увы, не могу глянуть, НО:
- начало последовательности должно точно совпадать с регистром начальных данных
- м-последовательность это псевдослучайный набор символов, так чтр и спектр у нее шумоподобный, те ниначто толком не похож (хотя должны быть "волны" вида sin(x)/x, которые соответствуют одному элементарному импульсу)

Добавлено через 7 минут
*убери из программы все проверки типа
if nargin<...
они ставят значения по умолчанию, если кол-во входных параметров меньше стольки-то. (а я спинным мозгом чувствую, что ты ее запускаешь вообще без параметров, поэтому имеешь nargin=0 со всеми вытекающими последствиями )
0
 Аватар для 1Ra2
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 16
23.10.2013, 20:42  [ТС]
чувство подвело, я ввожу все входные параметры. (:
акф м-послед-сти такая,какой и должна быть,а спектр ее не получается узреть.
Ладно,спасибо за совет,сейчас попробуем что-нибудь исправить.
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
24.10.2013, 10:56
1Ra2, во первых, зачем вы пишите код внутри функции, которая генерирует м-последовательность? Создайте новый скрипт, тогда в функцию сможете передавать параметры.
2. Значение регистра передается не в виде последовательости отдельных бит, а сразу в бинарном виде. Так что если вам удобнее использовать такую запись: [1 1 0 1 1 1 1 1 1 1 1 1] ее придется преобразовать таким образом:
Matlab M
1
initialRegister = bin2dec(char([1 1 0 1 1 1 1 1 1 1 1 1] + '0'));
3. Спектр чистой м-последовательности близок к прямоугольному, но вы его вычисляете для последовательности нулей и единиц, а значит ваша последовательность имеет не нулевое среднее и вы видите на спектре постоянку (первый отсчет спектра или центральный при использовании fftshift). Перед вычислением спектра приведите свою последовательность к виду "-1 1"
4. И как раз по поводу приведения к этому виду. Вы пишите:
Цитата Сообщение от 1Ra2 Посмотреть сообщение
T=mSeq*2-1;
то есть приводите последовательность к данному виду. Затем вы вычисляете комплексную огибающую:
Цитата Сообщение от 1Ra2 Посмотреть сообщение
y=pskmod(mSeq,2);
Для bpsk сигнала эти операции идентичны, только общепринятой (почему то) является такая форма записи: 1-2*mSeq. По сути в данном случае функция pskmod эту операцию и выполняет...
0
 Аватар для 1Ra2
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 16
24.10.2013, 14:50  [ТС]
vital792,
прежде всего, благодарю за готовность помочь, очень приятно.

>1Ra2, во первых, зачем вы пишите код внутри функции, которая генерирует м-последовательность? Создайте новый скрипт, тогда в функцию сможете передавать параметры.

при попытке код дописывать вне функции генерации, выскакивает ошибка ??? Error: File: MSeqGenerator.m Line: 99 Column: 3
This statement is not inside any function.
Было бы здорово, если бы Вы подкрепили Ваши советы примером.
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
24.10.2013, 16:14
подкрепляю примером.
Вложения
Тип файла: zip mseq.zip (1.6 Кб, 22 просмотров)
0
 Аватар для 1Ra2
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 16
24.10.2013, 17:04  [ТС]
vital792,
очень признательна.

и,тем не менее, выводится сообщение о той же ошибке
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
24.10.2013, 17:13
Цитата Сообщение от 1Ra2 Посмотреть сообщение
и,тем не менее, выводится сообщение о той же ошибке
странно, может быть вы как то не правильно запускаете? Запускается скрипт mseq_tst.m а функция MSeqGenerator должна быть расположена в том же каталоге, где и файл скрипта(или в катароге прописанном в path). Прикрепите пожалуйста скриншот с ошибкой, может это поможет понять..
0
 Аватар для 1Ra2
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 16
24.10.2013, 18:19  [ТС]
Вы были абсолютно правы,благодарю!
0
 Аватар для 1Ra2
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 16
27.10.2013, 11:32  [ТС]
vital792,
Зосима,
уважаемые,а допустимо ли такое моделирование фмн сигнала, или есть принципиальная ошибка?
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
clear all; close all; clc;
 
initialRegister=[1 0 1 0 1 1 1 1 1 1 0 1];
initialRegister = bin2dec(char(initialRegister + '0'));
mseq = MSeqGenerator(2, 12, initialRegister);
 
T= 1-2*mseq;
plot(xcorr(T));
 
sp = abs(fft(T));
% figure; plot(20*log10(sp));
figure; pcov(T, 2, [], 2^12);
 
Fs=10000;
Fd=100;
y=pskmod(mseq,2);
s=rcosflt(y,Fd,Fs);
figure(2);
plot(real(s));
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
28.10.2013, 12:09
Цитата Сообщение от 1Ra2 Посмотреть сообщение
допустимо ли такое моделирование фмн сигнала
вполне. Только как я писал выше, строки
Цитата Сообщение от 1Ra2 Посмотреть сообщение
T= 1-2*mseq;
Цитата Сообщение от 1Ra2 Посмотреть сообщение
y=pskmod(mseq,2);
идентичны, поэтому разумнее использовать первую. И если используете приподнятый косинус, то вам нужен корень из пряподнятого косинуса на передающей и приемной стороне(если таковые имеются). Примерно так:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
seq = MSeqGenerator(1, 10);
x = 1 - 2*seq;
% x = pskmod(seq, 2);
delay = 5;
Fs = 80000;
Fd = 20000;
FsFd = Fs/Fd;
b = rcosfir(0.5, delay, FsFd, 1/Fd, 'fir/sqrt');
y = rcosflt(x, Fd, Fs, 'filter', b); %sqrt
y = y ./ max(y);
stem(upsample(x, FsFd)); hold on; plot(y(FsFd*delay+1:end), 'r');
 
% rcosfir(R, Delay, FsDFd, 1/Fd, filt_type);
[x1 t] = filter(b, 1, y);
x1 = x1(length(b):end);
x1 = downsample(x1, FsFd);
x1 = x1 ./ max(x1);
figure; stem(x); hold on; stem(x1, 'rx');
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.10.2013, 12:09

Спектр сигнала
Здравствуйте. Помогите с правильным построением спектра. В роли сигнала - скорость, из решенной системы уравнений (методом рунге кутты)....

Получить спектр сигнала
Такая задача- Есть сигнал (рефлектограмма), заданная 4096 точками. Нужно получить гармонические составляющие. Как в данном случае верно...

Найти спектр сигнала
Тема: Свойства сигналов во временной и частотной областях. 1. Интервал времени наблюдения сигнала 1000 мсек. На этом интервале...

Спектр мощности сигнала
Привет, помогите разобраться с темой. Дан двумерный массив. Необходимо пройтись по каждому столбцу окном определенного размера с...

Спектр цифрового сигнала
В своей работе я задал цифровой сигнал как массив с определенным числом отсчетов (дискретов). Все пытаюсь, но никак не получается...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru