реклама на сайте
подробности

 
 
> Перенос спектра в Matlab
deneb13
сообщение Mar 7 2011, 18:03
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Здравствуйте! Возникла проблема. Реализую перенос спектра sin на 0-ю частоту. Для этого умножаю на экспоненту. Вопрос, почему из за переноса изменяются амплитудные соотношения?Совсем немного,но меняются!ведь по идее должны изменяться только частоты гармоник и все. Код привожу ниже
Fs=10*10^3;
f1=2*10^3;

t=0:1/Fs:1;
signal=1*sin(2*pi*f1*t);
y1=fft(signal);

figure(1)
plot(abs(y1)),grid


s1=signal.*exp(j*2*pi*f1*t);
figure(2)
y2=fft(s1);
plot(abs(y2)),grid
Спасибо!
Go to the top of the page
 
+Quote Post
4 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 49)
ataradov
сообщение Mar 7 2011, 19:43
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Разница зависит от частоты дискретизации и длинны выборки, похоже это просто погрешность FFT.

Сообщение отредактировал Taradov Alexander - Mar 7 2011, 19:49
Go to the top of the page
 
+Quote Post
Самурай
сообщение Mar 7 2011, 20:34
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



Цитата(deneb13 @ Mar 7 2011, 21:03) *
Здравствуйте! Возникла проблема.
...


Как было уже сказано, это из-за погрешности FFT. А точнее из-за того, что Вы FFT берете от 10001 точки, в этом случае частотный спектр имеет шаг дискретизации 10кГц/10001 = 0.9999Гц и сигнал частотой 2кГц попадает между двумя спектральными отсчетами. Это и приводит к погрешности измерения амплитуды.
Замените строчку "t=0:1/Fs:1" на "t=0:1/Fs:1-1/Fs", это решит проблему.

Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 8 2011, 17:04
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Спасибо огромное!действительно помогло!

Если можно, ответьте пожалуйста еще на один вопрос. Наверно опять проблема в погрешности fft, но тогда не понимаю, почему она возникает. С этим же сигналом, после фильтрации, выполняю обратный перенос на первоначальную частоту. Амплитуда опять меняется. Длины векторов остаются прежними. Что опять было упущено? Код прилагаю

Fs=10*10^3;
f1=2*10^3;
f2=4*10^3;
t=0:1/Fs:1-1/Fs;

signal=1*sin(2*pi*f1*t)+2*sin(2*pi*f2*t);
y1=fft(signal);

figure(1)
plot(abs(y1)),grid
title('Спектр исходного сигнала');


s1=signal.*exp(-j*2*pi*f1*t);
figure(2)
y2=fft(s1);
plot(abs(y2)),grid
title('Спектр перенесенного сигнала');

B1=[0.000074867323718623291
0.000029843947016906191
0.000035649251137170525
0.000042091749772785898
0.000049207651685282051
0.000057025721074006166
0.000065579982606295609
0.000074894688600103538
0.000084998464592263249
0.000095906944599545826
0.00010764057377583412
0.00012020685903585766
0.00013362042900918558
0.00014788529717745042
0.00016301296552518509
0.00017900206017028612
0.00019585384356087681
0.00021355033345440522
0.00023207543321342132
0.00025139354695834167
0.00027147928036987378
0.00029229420683612908
0.00031381075827335641
0.00033597892536717954
0.00035874915207741365
0.00038204131310657659
0.00040578976612778761
0.00042991522772108071
0.00045436483596751089
0.00047904333427598982
0.00050384929579228282
0.00052863752153019803
0.00055333850511602887
0.00057786619647086498
0.00060210611510683437
0.0006257905071241995
0.00064900905656298583
0.00067146426488381777
0.00069307362108383518
0.00071371214273047146
0.00073320062701199738
0.00075142572778662492
0.00076821265544567776
0.00078343209641189076
0.00079691819245689447
0.0008085381039427609
0.00081813426609220782
0.00082557461176558104
0.00083070708850672937
0.00083340327735858914
0.00083352260465997428
0.00083095026276507012
0.00082556391924235831
0.00081726029275528485
0.00080593050712979731
0.00079148599522964802
0.0007738417585242208
0.00075293820561771814
0.00072871712417941971
0.00070113590200281811
0.00067015698634955963
0.00063576966644221988
0.00059798041723357963
0.00055680986912850182
0.00051228299703510137
0.00046444844677513198
0.00041338731501109667
0.00035918843129745774
0.00030194252247403786
0.00024177341975123654
0.00017885598182614156
0.000113306600823241
0.000045333361450898598
-0.000024869351949700824
-0.000097103599499594588
-0.00017111187096671693
-0.00024666699809691337
-0.00032348451646964198
-0.00040129972048327968
-0.00047980547332992493
-0.00055870331403961237
-0.00063766033643191202
-0.00071635231963890027
-0.00079442819345953986
-0.00087154701127434156
-0.00094734204318419027
-0.0010214560517119006
-0.0010935128252451962
-0.0011631496035010649
-0.0012299924905660802
-0.0012936801049696345
-0.0013538395168376132
-0.0014101167323676916
-0.0014621561022228591
-0.001509623166065856
-0.0015521807461206609
-0.0015895143416746335
-0.0016213205887912342
-0.0016473241868954092
-0.0016672543865457272
-0.0016808686184831172
-0.0016879494710142569
-0.0016883117045997894
-0.0016817789958335427
-0.0016682176295261186
-0.0016475294459246312
-0.0016196272022528976
-0.0015844757988635676
-0.0015420758109769049
-0.0014924412224791917
-0.0014356555425266994
-0.0013718032498286298
-0.0013010394487680812
-0.0012235320329592899
-0.0011395078131137791
-0.0010492133697008541
-0.00095294911593929671
-0.00085103874162868699
-0.00074385900503890368
-0.00063180747056448285
-0.00051533159990874123
-0.00039489798082718256
-0.00027102046219501839
-0.00014423261171928799
-0.000015107192143127688
0.00011576835014704229
0.00024776794565646359
0.00038025412485131652
0.00051255881681363938
0.00064401087734885208
0.00077391268795518411
0.00090156324510963168
0.0010262451175025195
0.0011472502297884227
0.0012638570940360445
0.0013753543177702373
0.0014810315797351504
0.0015801993917129518
0.0016721654941180143
0.0017562700070420914
0.0018318714495729322
0.0018983499480612295
0.001955115604617092
0.0020016210874932226
0.0020373357023431358
0.0020617968844452677
0.0020745577194886465
0.0020752427668374626
0.0020635077831940296
0.0020390777645383951
0.0020017215556572092
0.0019512785593668654
0.0018876379184231378
0.00181076522969225
0.0017206794094045876
0.0016174801503727888
0.0015013219439372187
0.0013724410035904861
0.0012311356991687385
0.0010777854567875196
0.00091282935024940249
0.00073678829856948342
0.00055024358978284697
0.00035385856813305495
0.00014835278897694663
-0.000065477663074763916
-0.00028678000255334582
-0.00051462874765795794
-0.00074805087988135809
-0.00098600485267714174
-0.0012274029075307119
-0.0014711000738689599
-0.001715917082149265
-0.0019606173227907416
-0.0022039393041064555
-0.0024445823154837826
-0.0026812209683040001
-0.0029125026476055651
-0.0031370686755146132
-0.0033535313249636353
-0.0035605194051896976
-0.0037566406312513341
-0.0039405274575157303
-0.004110810694194075
-0.004266150890035114
-0.0044052253371144896
-0.00452675145053082
-0.0046294747186861962
-0.0047121940643470245
-0.0047737470119906299
-0.004813040330222243
-0.0048290301594689439
-0.0048207490678348949
-0.0047872940617394782
-0.0047278489212654352
-0.0046416710564801374
-0.0045281149425436956
-0.0043866162362661155
-0.0042167179759658125
-0.0040180521133887058
-0.0037903617578293621
-0.0035334877881856596
-0.0032473894309709458
-0.0029321244684466911
-0.002587872236078986
-0.0022149177580068837
-0.0018136676421232414
-0.0013846306049196367
-0.00092844222474954496
-0.00044583971879492545
0.000062320900346972839
0.00059507946179006342
0.0011513620223204378
0.0017300003802191962
0.002329709842908615
0.0029491251376265581
0.0035867707448209128
0.0042410962523754371
0.0049104570303590027
0.0055931368835668918
0.0062873399938202052
0.0069912108562696761
0.0077028263936973936
0.0084202192531677243
0.0091413635116792211
0.0098642072937224021
0.010586655725801431
0.011306599068558625
0.012021904004335312
0.012730436769847217
0.013430055818563241
0.014118637311338231
0.014794062900710676
0.015454250025499331
0.016097139668424538
0.016720721187340245
0.017323024712336078
0.017902147059561155
0.018456238197103358
0.018983528040541858
0.019482317990833237
0.01995100336042771
0.020388059889961278
0.02079207270759072
0.021161720312999361
0.0214957976242044
0.021793207009755969
0.02205297610813545
0.022274244895276123
0.022456291164941175
0.022598506895452168
0.0227004288620027
0.022761715857729192
0.022782168419279283
0.022761715857729192
0.0227004288620027
0.022598506895452168
0.022456291164941175
0.022274244895276123
0.02205297610813545
0.021793207009755969
0.0214957976242044
0.021161720312999361
0.02079207270759072
0.020388059889961278
0.01995100336042771
0.019482317990833237
0.018983528040541858
0.018456238197103358
0.017902147059561155
0.017323024712336078
0.016720721187340245
0.016097139668424538
0.015454250025499331
0.014794062900710676
0.014118637311338231
0.013430055818563241
0.012730436769847217
0.012021904004335312
0.011306599068558625
0.010586655725801431
0.0098642072937224021
0.0091413635116792211
0.0084202192531677243
0.0077028263936973936
0.0069912108562696761
0.0062873399938202052
0.0055931368835668918
0.0049104570303590027
0.0042410962523754371
0.0035867707448209128
0.0029491251376265581
0.002329709842908615
0.0017300003802191962
0.0011513620223204378
0.00059507946179006342
0.000062320900346972839
-0.00044583971879492545
-0.00092844222474954496
-0.0013846306049196367
-0.0018136676421232414
-0.0022149177580068837
-0.002587872236078986
-0.0029321244684466911
-0.0032473894309709458
-0.0035334877881856596
-0.0037903617578293621
-0.0040180521133887058
-0.0042167179759658125
-0.0043866162362661155
-0.0045281149425436956
-0.0046416710564801374
-0.0047278489212654352
-0.0047872940617394782
-0.0048207490678348949
-0.0048290301594689439
-0.004813040330222243
-0.0047737470119906299
-0.0047121940643470245
-0.0046294747186861962
-0.00452675145053082
-0.0044052253371144896
-0.004266150890035114
-0.004110810694194075
-0.0039405274575157303
-0.0037566406312513341
-0.0035605194051896976
-0.0033535313249636353
-0.0031370686755146132
-0.0029125026476055651
-0.0026812209683040001
-0.0024445823154837826
-0.0022039393041064555
-0.0019606173227907416
-0.001715917082149265
-0.0014711000738689599
-0.0012274029075307119
-0.00098600485267714174
-0.00074805087988135809
-0.00051462874765795794
-0.00028678000255334582
-0.000065477663074763916
0.00014835278897694663
0.00035385856813305495
0.00055024358978284697
0.00073678829856948342
0.00091282935024940249
0.0010777854567875196
0.0012311356991687385
0.0013724410035904861
0.0015013219439372187
0.0016174801503727888
0.0017206794094045876
0.00181076522969225
0.0018876379184231378
0.0019512785593668654
0.0020017215556572092
0.0020390777645383951
0.0020635077831940296
0.0020752427668374626
0.0020745577194886465
0.0020617968844452677
0.0020373357023431358
0.0020016210874932226
0.001955115604617092
0.0018983499480612295
0.0018318714495729322
0.0017562700070420914
0.0016721654941180143
0.0015801993917129518
0.0014810315797351504
0.0013753543177702373
0.0012638570940360445
0.0011472502297884227
0.0010262451175025195
0.00090156324510963168
0.00077391268795518411
0.00064401087734885208
0.00051255881681363938
0.00038025412485131652
0.00024776794565646359
0.00011576835014704229
-0.000015107192143127688
-0.00014423261171928799
-0.00027102046219501839
-0.00039489798082718256
-0.00051533159990874123
-0.00063180747056448285
-0.00074385900503890368
-0.00085103874162868699
-0.00095294911593929671
-0.0010492133697008541
-0.0011395078131137791
-0.0012235320329592899
-0.0013010394487680812
-0.0013718032498286298
-0.0014356555425266994
-0.0014924412224791917
-0.0015420758109769049
-0.0015844757988635676
-0.0016196272022528976
-0.0016475294459246312
-0.0016682176295261186
-0.0016817789958335427
-0.0016883117045997894
-0.0016879494710142569
-0.0016808686184831172
-0.0016672543865457272
-0.0016473241868954092
-0.0016213205887912342
-0.0015895143416746335
-0.0015521807461206609
-0.001509623166065856
-0.0014621561022228591
-0.0014101167323676916
-0.0013538395168376132
-0.0012936801049696345
-0.0012299924905660802
-0.0011631496035010649
-0.0010935128252451962
-0.0010214560517119006
-0.00094734204318419027
-0.00087154701127434156
-0.00079442819345953986
-0.00071635231963890027
-0.00063766033643191202
-0.00055870331403961237
-0.00047980547332992493
-0.00040129972048327968
-0.00032348451646964198
-0.00024666699809691337
-0.00017111187096671693
-0.000097103599499594588
-0.000024869351949700824
0.000045333361450898598
0.000113306600823241
0.00017885598182614156
0.00024177341975123654
0.00030194252247403786
0.00035918843129745774
0.00041338731501109667
0.00046444844677513198
0.00051228299703510137
0.00055680986912850182
0.00059798041723357963
0.00063576966644221988
0.00067015698634955963
0.00070113590200281811
0.00072871712417941971
0.00075293820561771814
0.0007738417585242208
0.00079148599522964802
0.00080593050712979731
0.00081726029275528485
0.00082556391924235831
0.00083095026276507012
0.00083352260465997428
0.00083340327735858914
0.00083070708850672937
0.00082557461176558104
0.00081813426609220782
0.0008085381039427609
0.00079691819245689447
0.00078343209641189076
0.00076821265544567776
0.00075142572778662492
0.00073320062701199738
0.00071371214273047146
0.00069307362108383518
0.00067146426488381777
0.00064900905656298583
0.0006257905071241995
0.00060210611510683437
0.00057786619647086498
0.00055333850511602887
0.00052863752153019803
0.00050384929579228282
0.00047904333427598982
0.00045436483596751089
0.00042991522772108071
0.00040578976612778761
0.00038204131310657659
0.00035874915207741365
0.00033597892536717954
0.00031381075827335641
0.00029229420683612908
0.00027147928036987378
0.00025139354695834167
0.00023207543321342132
0.00021355033345440522
0.00019585384356087681
0.00017900206017028612
0.00016301296552518509
0.00014788529717745042
0.00013362042900918558
0.00012020685903585766
0.00010764057377583412
0.000095906944599545826
0.000084998464592263249
0.000074894688600103538
0.000065579982606295609
0.000057025721074006166
0.000049207651685282051
0.000042091749772785898
0.000035649251137170525
0.000029843947016906191
0.000074867323718623291];
B=B1';
z=filtfilt(B,1,s1);


y2(10:(length(y2)-10))=0;
figure(3)
plot(abs(y2)),grid
s_f = ifft(y2);
title('Спектр фильтрованного сигнала ОБНУЛЕНИЕМ');


s_obr=z.*exp(j*2*pi*f1*t);
spektr=fft(s_obr);
figure(4)
plot(abs(spektr)),grid
title('Спектр обратного переноса сигнала');

rez=signal-s_obr;
spektr_rez=fft(rez);


z0=fft(z);
figure(5)
plot(abs(z0)),grid
title('Спектр фильтрованного сигнала');

figure(6)
plot(abs(spektr_rez)),grid
title('КОМПЕНСАЦИЯ');

Спасибо!
P.S. Извините за возможно глупые вопросы-Matlab в стадии начального освоения blush.gif
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 8 2011, 17:20
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



1. для создания фильтров в момент выполнения есть много разных функций, например firls()
2. для наглядности лучще строить логарифм спектра, тогда лучше видны особенности сигнала и с ним удобнее работать
3. фильтрация оставляет артефакты, они проявляются на всех последующих стадиях
4. filtfilt() делает физически невозможные вещи, если хотите модель применять в жизни для потоковой обработки, то от нее лучше отказаться.

Какова исходная задача?
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 8 2011, 17:24
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Исходная задача: сигнал есть сумма полезной составляющей и помехи. Перенести сумму на 0-ю частоту, отфильтровать та мпомеху, затем помеху перенести на первоначальную частоту и вычесть из исходной суммы отфильтрованную помеху.т.е. получается простая модель компенсатора
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 8 2011, 17:33
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Не думаю что так получится в жизни, не хватит точности вычислений для переносов туда-сюда и вычитаний потом, особенно если переводить модель на фиксированную точку.

И если в результате нужен полезный сигнал, то почему его и не фильровать сразу?

Сообщение отредактировал Taradov Alexander - Mar 8 2011, 17:34
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 8 2011, 17:38
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Это задание на курсовой. Нужно сделать именно компенсатор помех, работающий по такому методу. В дальнейшем вместо полезного сигнала будет шпс.Сейчас проверяю методику на более простом примере

То есть, получается что данное изменение амплитуды есть погрешность вычислений, которое никак не обойти?Верно?
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 8 2011, 17:44
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (deneb13 @ Mar 8 2011, 20:38) *
Это задание на курсовой. Нужно сделать именно компенсатор помех, работающий по такому методу. В дальнейшем вместо полезного сигнала будет шпс.Сейчас проверяю методику на более простом примере
Возможно и есть такие компенсаторы, но с какими-нибудь тонкостями в реализации, я не знаю, это пусть более опытные товарищи расскажут.

QUOTE (deneb13 @ Mar 8 2011, 20:38) *
То есть, получается что данное изменение амплитуды есть погрешность вычислений, которое никак не обойти?Верно?

Обратите внимание, что после фильтрации не только амплитуда изменилась, но и появились дополнительные частоты, посмотрите на временное представление сигнала на всех стадиях и увидите, где именно все пошло не так.

Это не совсем погрешность вычислений уже, это просто фильтр не идеален (и 500+ порядок - это редко когда применимо в жизни) и неидеальность фильтра накладывается на результат.
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 8 2011, 18:16
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Спасибо!

Taradov Alexander, по вашему совету функцию filtfilt изменила на firls(). Помеха отфильтровалась. Теперь ее уровень значительно ниже! Предполагаю, что связано с методом фильтрации. Вы не могли бы подсказать, каким еще методом можно воспользоваться, возможно он даст более лучшие результаты?
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 8 2011, 18:25
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (deneb13 @ Mar 8 2011, 21:16) *
Taradov Alexander, по вашему совету функцию filtfilt изменила на firls(). Помеха отфильтровалась.

Хм, это как? filtfilt() фильтрует, а firls() выдает коэффициенты фильтра, они для разного предназанчены. Для физически реализуемой фильрации есть функция filter().

Покажите код, так будет проще.

Потом, какая помеха ожидается? Отфильтровать один синус - это не то же самое, что убрать широкополосный шум.
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 8 2011, 18:47
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Помеха в дальнейшем так и будет sin-узкополосная.Сигнал будет широкополосный. Извините,запутала вас. До этого я коэффициенты фильтра рассчитывала с помощью fdatool, а сейчас сделала с помощью firls() . Фильтрация осуществлена с помощью filter(). Привожу код
Fs=10*10^3;
f1=2*10^3;
f2=4*10^3;
t=0:1/Fs:1-1/Fs;

signal=1*sin(2*pi*f1*t)+2*sin(2*pi*f2*t);
y1=fft(signal);

figure(1)
plot(abs(y1)),grid
title('Спектр исходного сигнала');


s1=signal.*exp(-j*2*pi*f1*t);
figure(2)
y2=fft(s1);
plot(abs(y2)),grid
title('Спектр перенесенного сигнала');


f=[0 0.1 0.15 1];
a=[1 1 0 0];
b=firls(80,f,a);


B=b';
z=filter(B,1,s1);


y2(10:(length(y2)-10))=0;
figure(3)
plot(abs(y2)),grid
s_f = ifft(y2);
title('Спектр фильтрованного сигнала ОБНУЛЕНИЕМ');

s_obr=z.*exp(j*2*pi*f1*t);
spektr=fft(s_obr);
f_spektr=angle(s_obr);
figure(4)
plot(abs(spektr)),grid
title('АХ обратного переноса сигнала');


rez=signal-s_obr;
spektr_rez=fft(rez);


z0=fft(z);
figure(5)
plot(abs(z0)),grid
title('Спектр фильтрованного сигнала');

figure(6)
plot(abs(spektr_rez)),grid
title('КОМПЕНСАЦИЯ');
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 8 2011, 19:03
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Хорошо, этот метод почти сработал для небольшого куска сигнала, Вы думали как его использовать для потока? Обычно игры с FFT для этого не очень подходят.

Обратите внимание на временное представление сигнала z, у него в начале проявляется переходная характеристика фильра и сигнал задержан на половину длинны ИХ фильра (40 отсчетов). При потоковой обработке такое произойдет только один раз в начале работы и далее все будет хорошо, но если поток разбивать на блоки, то такое будет в каждом блоке.

Вообще странный метод, как мне кажется, может есть ссылка на какое-нибудь его описние?
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 8 2011, 19:15
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Например,в Тузове "Стат.теория приема сложных сигналов",1977 г.,стр.128.Встречала еще в некоторых книгах,к сожалению, названия не вспомню,за последнее время много информации перечитала. Для шпс сигнала в принципе метод не планировала менять. Т.е.предполагала просто к сигналу прибавить sin,а дальше действовать по тому же алгоритму. Почему fft нежелательно использовать, не могли бы объяснить?


Хочу еще задать вопрос:почему в аплитудах sin я указываю 1 и 2, а на графиках они отображаются с амплитудами 5000 и 10000.из за чего это?
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 8 2011, 19:31
Сообщение #15


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (deneb13 @ Mar 8 2011, 22:10) *
Например,в Тузове "Стат.теория приема сложных сигналов",1977 г.,стр.128.
Хм, ну книжки 77 года я сейчас икать не буду, конечно sm.gif

QUOTE (deneb13 @ Mar 8 2011, 22:10) *
Почему fft нежелательно использовать, не могли бы объяснить?
В первую очередь потому, что FFT вещь блочная, причем FFT не очень хорошо сохраняет временное представление сигнала, после его обраюотки в чатотной области. В частности - Ваш пример, где фильтрация достигается путем зануления некоторых компонент в частотной области и обратным преобразованием, так не делают в жизни. Это работает для суммы двух синусов, но не более.

Я бы рекомендовал экспериментировать сразу на более или менее реальном сигнале, так как синусы (да еще с очень красиво подогнанными частотами под окно FFT) не репрезентативны. Ваш метод в реальности исказит сигнал так, что демодулятору скорее самому проще с помехой будет справиться, чем после такой фильтрации.


QUOTE (deneb13 @ Mar 8 2011, 22:15) *
Хочу еще задать вопрос:почему в аплитудах sin я указываю 1 и 2, а на графиках они отображаются с амплитудами 5000 и 10000.из за чего это?
FFT в матлабе не нормализованное, результат нужно делить на длинну выборки / 2.


И еще, сразу делайте модель так, чтобы в нее можно было потенциально подставить выборку любой длинны.

В Вашем случае получается, что берется FFT сразу от всего сигнала, так не получится сделать на практике, размер блока скорее всего не будет превышать 16384 или около того. Вот это сразу заложите в модель. И даже на 2-х синусах с текущим подходом возникнут проблемы.
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 8 2011, 19:32
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Спасибо!Вы мне очень помогли!А насчет книги-сами постоянно сокрушаемся,что учиться приходится по литературе 30-40 летней давности
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 8 2011, 19:37
Сообщение #17


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (deneb13 @ Mar 8 2011, 22:32) *
Спасибо!Вы мне очень помогли!А насчет книги-сами постоянно сокрушаемся,что учиться приходится по литературе 30-40 летней давности
Ну не вся литература того времени плоха, просто некоторые вещи либо устаревают либо на практике особо и не применимы ни тогда ни сейчас. Все фильтровать нужно.
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 8 2011, 19:47
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Спасибо!
Go to the top of the page
 
+Quote Post
314
сообщение Mar 9 2011, 06:38
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 17-08-07
Пользователь №: 29 855



Извините, если не в тему, но такой метод фильтрации очень отдаленно напоминает калмановский фильтр, случаем не его требуется реализовать? Хотя не знаю, для ШПС есть способы его применения или нет.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 9 2011, 06:39
Сообщение #20


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Что-то не выходит у меня из головы этот метод, может сможете отсканировать или сфотографировать несколько страниц из книги, где этот метод описан?

Я не понимаю зачем может потребоваться переносить спектр после фильрации назад, если демодулятору в 0 работать обычно удобнее.
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 9 2011, 08:33
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Мои знания о фильтре Калмана достаточно поверхностны, но,насколько могу судить, это не он. Методы фильтрации узкополосных помех делятся на 2 класса:режекция и компенсация.Компенсация заключается в создании копии помехи и последующем вычитании ее из смеси сигнала и помехи. Перенос на 0-ю частоту делается исходя из следующих соображений: первоначально необходимо оценить частоту нахождения помехи. Далее, можно именно на этой частоте и вырезать помеху, но, тогда придется каждый раз пересчитывать коэффициенты фильтра(для разных частот). Проще перенести помеху на 0-ю частоту, где уже есть ФНЧ с заданными характеристиками,отфильтровать,а затем обратно.

Скан страниц книги прикрепляю. Правда там всего пару предложений написано, по сути,то,что я изложила выше
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
petrov
сообщение Mar 9 2011, 09:30
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Узкополосную помеху можно адаптивным фильтром компенсировать, он сам автоматически будет коэффициенты подстраивать. Но если это связи касается, то мало просто вырезать помеху, фильтр будет искажения в полезный сигнал вносить.
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 9 2011, 09:43
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



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

Сообщение отредактировал deneb13 - Mar 9 2011, 09:51
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 9 2011, 09:46
Сообщение #24


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (deneb13 @ Mar 9 2011, 11:33) *
Перенос на 0-ю частоту делается исходя из следующих соображений: первоначально необходимо оценить частоту нахождения помехи.
А как Вы это собираетесь делать если частота заранее не известна? Потому что если узнать частоту помехи, то можно простой режекторный фильтр сделать с автоматической подстройкой коэффициентов.

QUOTE (deneb13 @ Mar 9 2011, 11:33) *
Скан страниц книги прикрепляю. Правда там всего пару предложений написано, по сути,то,что я изложила выше

Тут нигде не говорится про FFT. И недостатки метода автор сам отметил.

FFT не самый лучший метод оценки.
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 9 2011, 09:49
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



я описала общий принцип метода компенсации.в своем конкретном примере считаю(пока руководитель ничего не изменил), что частоту уже обнаружила,без учета метода.Т.е. есть какой то гипотетический блок,который уже оценил частоту помехи и присвоил ее значение f1.

Сообщение отредактировал deneb13 - Mar 9 2011, 09:50
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 9 2011, 09:55
Сообщение #26


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (deneb13 @ Mar 9 2011, 12:49) *
Т.е. есть какой то гипотетический блок,который уже оценил частоту помехи и присвоил ее значение f1.


Ok, тогда сделайте оценку фазы и амплитуды при помощи ФАПЧ, например. И генерируйте синус в противофазе с оцененными параметрами. В отличае от БПФ ФАПЧ работает непрерывно и вопрос разбивки на блоки не стоит.
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 9 2011, 09:55
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Цитата(Taradov Alexander @ Mar 9 2011, 12:46) *
FFT не самый лучший метод оценки.


а какой метод дает более хорошие результаты?
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 9 2011, 09:59
Сообщение #28


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (deneb13 @ Mar 9 2011, 12:55) *
а какой метод дает более хорошие результаты?

См. выше про ФАПЧ, получите мгновенную фазу и амплитуду, а не усредненную за окно.

Можно наверное и при помощи БПФ оценивать, если сигнал стационарный, но вычитаение делать именно генерацией такого-же локального синуса и вычитанием из сигнала, а не играми с ОБПФ.
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 9 2011, 10:01
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Спасибо,интересная для меня мысль!
Go to the top of the page
 
+Quote Post
Herz
сообщение Mar 9 2011, 10:15
Сообщение #30


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(Taradov Alexander @ Mar 9 2011, 08:39) *
Что-то не выходит у меня из головы этот метод, может сможете отсканировать или сфотографировать несколько страниц из книги, где этот метод описан?

Это напоминает мне метод спектральной инверсии. Но не скажу, что я в нём разбираюсь. biggrin.gif

Цитата(deneb13 @ Mar 8 2011, 21:32) *
А насчет книги-сами постоянно сокрушаемся,что учиться приходится по литературе 30-40 летней давности

Напрасно сокрушаетесь. Много по-настоящему хороших книг написаны ещё раньше...
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 9 2011, 11:11
Сообщение #31


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Цитата(Taradov Alexander @ Mar 8 2011, 22:03) *
Обратите внимание на временное представление сигнала z, у него в начале проявляется переходная характеристика фильра и сигнал задержан на половину длинны ИХ фильра (40 отсчетов). При потоковой обработке такое произойдет только один раз в начале работы и далее все будет хорошо, но если поток разбивать на блоки, то такое будет в каждом блоке.


Вопрос:можно ли устранить данную задержку?
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 9 2011, 11:17
Сообщение #32


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (deneb13 @ Mar 9 2011, 14:11) *
Вопрос:можно ли устранить данную задержку?
Если фильтруете всегда блок фиксированной длинны, то filtfilt() как раз для этого.


Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 9 2011, 11:41
Сообщение #33


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Да,блок всегда фиксированной длины.а если использовать filter?как быть в этом случае?
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 9 2011, 11:53
Сообщение #34


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (deneb13 @ Mar 9 2011, 14:41) *
Да,блок всегда фиксированной длины.а если использовать filter?как быть в этом случае?
Например можно добавить в начало сигнала 40 (длинна фильтра/2) отсчетов сигнала с обратным знаком и в обратном порядке во времени. То есть если есть вектор [1 2 3 4 5 .... 100], то его нужно превратить в вектор [-40 -39 .... -1 1 2 3.... 100] и после филтрации начало обрезать. В конец тоже нулей добавить, чтобы не потерять хвост.

Но filtfilt() не хуже совсем, она делает 2 прохода - в одну и другую сторону, чтобы скомпенсировать искажение фазы.
Go to the top of the page
 
+Quote Post
petrov
сообщение Mar 9 2011, 12:05
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



deneb13, делайте с переносом в 0 и обратно, в нуле задавите вашу помеху ФВЧ фильтром, это нормальный подход. FFT здесь не нужно. Блочность не должна влиять на обработку, совпадать она должна с потоковой, это всего лишь манипуляции с данными.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 9 2011, 12:13
Сообщение #36


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (petrov @ Mar 9 2011, 15:05) *
deneb13, делайте с переносом в 0 и обратно, в нуле задавите вашу помеху ФВЧ фильтром
Это несомненно позволит добиться нужного результата, но не совпадет с темой курсовой, так как так или иначе помеху просто отфильтровали, а не оценили и вычли. То что требуется - это извращение еше то, конечно, но чего не сделаешь ради образования sm.gif

PS: хотя если применить ФНЧ и в 0 снести именно помеху, то на выходе как раз получится чисто помеха, ее обратно на место перенести и можно вычитать.

Сообщение отредактировал Taradov Alexander - Mar 9 2011, 12:15
Go to the top of the page
 
+Quote Post
petrov
сообщение Mar 9 2011, 12:17
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Taradov Alexander @ Mar 9 2011, 15:13) *
Это несомненно позволит добиться нужного результата, но не совпадет с темой курсовой, так как так или иначе помеху просто отфильтровали, а не оценили и вычли. То что требуется - это извращение еше то, конечно, но чего не сделаешь ради образования sm.gif



А что есть какая-то разница выделить сигнал ФНЧ фильтром и вычесть из задержанного сигнала или сразу ФВЧ задавить? Это буквально одно и то же. ИХ ФВЧ фильтра так и получается из ФНЧ прототипа задержкой и вычитанием.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 9 2011, 12:22
Сообщение #38


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (petrov @ Mar 9 2011, 15:17) *
Это буквально одно и то же. ИХ ФВЧ фильтра так и получается из ФНЧ прототипа задержкой и вычитанием.
Я понимаю, просто курсовая тогда очень странная получается, больше на ДЗ похожа.
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 9 2011, 12:45
Сообщение #39


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Цитата(Taradov Alexander @ Mar 9 2011, 15:13) *
PS: хотя если применить ФНЧ и в 0 снести именно помеху, то на выходе как раз получится чисто помеха, ее обратно на место перенести и можно вычитать.


именно это я и пытаюсь сделать!вот только при вычитании, помеха до абсолютного 0 не уходит
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 9 2011, 12:52
Сообщение #40


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (deneb13 @ Mar 9 2011, 15:45) *
именно это я и пытаюсь сделать!вот только при вычитании, помеха до абсолютного 0 не уходит
Нужно смотреть на задержки фазы, вносимые фильтрами. Ну и плного прямо нуля не выдет, немного все-равно останется.

Я вечерком попробую такое сотворить.
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 9 2011, 12:58
Сообщение #41


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Буду благодарна,если расскажете о своих результатах!
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 9 2011, 18:43
Сообщение #42


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Я решил попробовать для начала просто одну помеху подавить таким методом, но наткнулся на эффект, который сходу объяснить не могу, может коллективный разум поможет.

Код:
CODE
clear all;

Fs = 10e3;
f1 = 1e3;

t = 0:1/Fs:100000/Fs;

s = sin(2*pi*f1*t);

s0 = s .* exp(-j*2*pi*f1*t);

h = firls(150, [0 150 1000 Fs] / Fs, [1 1 0 0]);

sf = filtfilt(h, 1, s0);

sh = sf .* exp(j*2*pi*f1*t);

figure; hold on; plot(s); plot(real(sh), 'r'); plot(imag(sh), 'g');


Тут происходит перенос помехи в 0, фильтрация ФНЧ и перенос результата назад.

Проблема - если частота помехи низкая (f1 = 20 Гц), то imag(sh) около 0, а real(sh) совпадает по фазе и амплитуде с исходным синусом. Но если частоту увеличивать, то постепенно действительная и мнимая части становятся амплитудой 0.5 и не совпадают по фазе с исходным синусом.

Похоже это из-за фильтрации, но я не могу с ходу понять почему именно.
Go to the top of the page
 
+Quote Post
Самурай
сообщение Mar 9 2011, 19:30
Сообщение #43


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



Цитата(Taradov Alexander @ Mar 9 2011, 21:43) *
Я решил попробовать для начала просто одну помеху подавить таким методом, но наткнулся на эффект, который сходу объяснить не могу, может коллективный разум поможет.
...
Похоже это из-за фильтрации, но я не могу с ходу понять почему именно.


Угу, из-за фильтрации. Тот фильтр, что у Вас, просто давит зеркальную часть смещенного в ноль синуса. Что там происходит при обратном переносе мне не ведомо (лень формулы писать), но явно не то, что хотелось быsm.gif. Полосу пропускание фильтра надо бы увеличить, или делать комплексный фильтр.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 9 2011, 19:42
Сообщение #44


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (Самурай @ Mar 9 2011, 22:30) *
Полосу пропускание фильтра надо бы увеличить, или делать комплексный фильтр.


Да, действительно, это из-за того, что фильр с действительными коэффициентами.

В общем идею это иллюстрирует, только нужно правильно фильтр посчитать.

Но вообще так избаляться от помех - это изврат.
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 9 2011, 20:48
Сообщение #45


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Скажите, а как можно посчитать комплексный фильтр?может литература есть какая по этому вопросу?дело в том,что если в качестве сигнала использовать шпс, то нельзя сильно увеличивать ПП фильтра-сигнал ведь тоже вырезаться будет.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 9 2011, 20:58
Сообщение #46


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (deneb13 @ Mar 9 2011, 23:48) *
Скажите, а как можно посчитать комплексный фильтр?
Нужно аккуратно на бумажке выписать все преобразования сигнала и в результате будет очевидно (ну или более понятно) как сделать фильтр.

Формальных методов для рассчета таких фильтров я лично не знаю.
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 9 2011, 20:59
Сообщение #47


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Для того,чтобы узнать насколько следует увеличивать полосу пропускания также нужно формулы сначала записать?
Go to the top of the page
 
+Quote Post
ataradov
сообщение Mar 9 2011, 21:03
Сообщение #48


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (deneb13 @ Mar 9 2011, 23:59) *
Для того,чтобы узнать насколько следует увеличивать полосу пропускания также нужно формулы сначала записать?
В данном случае ее нельзя увеличивать, Вы правы, фильтр будет захватывать полезный сигнал. Его наоборот как можно уже нужно делать.

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

PS: Запишите формулы, это не так сложно и школьная математика с перемножением синусов и косинусов пригодится.

Сообщение отредактировал Taradov Alexander - Mar 9 2011, 21:04
Go to the top of the page
 
+Quote Post
deneb13
сообщение Mar 9 2011, 21:05
Сообщение #49


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 16-02-11
Пользователь №: 63 022



Спасибо,попробую
Go to the top of the page
 
+Quote Post
petrov
сообщение Mar 9 2011, 21:46
Сообщение #50


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(Taradov Alexander @ Mar 10 2011, 00:03) *
Его наоборот как можно уже нужно делать.


Врядли, узкополосный резкий фильтр будет "звенеть", сильнее искажая сигнал.
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 12:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01846 секунд с 7
ELECTRONIX ©2004-2016