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

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

16.12.2012, 10:13. Показов 11133. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru