|
Увеличение разрешения по частоте, засчёт накопления |
|
|
|
 |
Ответов
|
Aug 2 2008, 00:00
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Вот обещанная "рыба". Код function phase_adj() fsampl = 1000; % частота дискретизации, кГц freq = 68; % Частота гармонического тона, кГц len_buf = 4096; % длина буфера, отсчёты shift = pi/4; % величина фазового сдвига между кусками, рад
% Заполняем буферы сигналом и аддитивным шумом buffer_1 = sin(2*pi*(1:len_buf)*freq/fsampl)+(1e-5)*randn(1,len_buf); buffer_2 = sin(2*pi*(1:len_buf)*freq/fsampl+shift)+(1e-5)*randn(1,len_buf);
% Пытаемся склеить без учёта фазовых соотношений sum_buf_1 = [buffer_1, buffer_2];
% Делаем оценку спектров кусков и склейки, используя спектральные окна specw_1=fft(blackman(len_buf)'.*buffer_1); specw_2=fft(blackman(len_buf)'.*buffer_2);
sp_sum_1=fft(hamming(2*len_buf)'.*sum_buf_1);
% Находим фазовые спектры кусков ang_1 = angle(specw_1); ang_2 = angle(specw_2);
% Находим положение максимума модуля спектральной функции [max_1, frq_1] = max(abs(specw_1));
% Находим фазу основного тона в конце 1-го куска (не доделано!) ang_1_end = ang_1(frq_1);
% Находим разность фаз diff_ang=ang_1_end-ang_2(frq_1);
% Находим поворачивающий множитель для частоты основного тона rotator=-exp(i*diff_ang);
% Преобразуем второй буфер в комплексный вид buf_2_hilb=hilbert(buffer_2);
% Разворачиваем его на величину сдвига фаз (нужно ещё ввести компенсацию по % частоте, проще говоря - временнОй сдвиг) buf_2_rot=real(buf_2_hilb*rotator);
% Склеиваем sum_buf_2 = [buffer_1, buf_2_rot];
% Находим модуль спектра склейки sp_sum_2=fft(hamming(2*len_buf)'.*sum_buf_2);
% Выводим результаты figure (1) plot (buffer_1(1:100)) hold on plot (buffer_2(1:100), 'r') hold off grid on title ('Signals')
figure (2) plot ((4032:4160), sum_buf_1(4032:4160)) grid on title ('Glue 1')
figure (3) plot ((4032:4160), sum_buf_2(4032:4160), 'Color', [0.9 0 0]) grid on title ('Glue 2')
figure (4) semilogy (500:600, abs(sp_sum_1(500:600))) hold on semilogy (500:600, abs(sp_sum_2(500:600)), 'r') hold off grid on title ('Spectra')
return; Правда, она годится лишь для демонстрации принципа: для условий задачи она пока не слишком хорошо подходит - не сделан временнОй сдвиг, поэтому, компоненты, отстоящие от основной частоты на значительную величину, будут "склеиваться" плохо. Кроме того, фаза определяется весьма грубо, и нет процедуры её коррекции от перескока. Однако, вблизи центральной частоты всё будет более-менее хорошо. За ошибки прошу не карать строго - набросал относительно быстро, и они возможны. Завтра постараюсь сделать аккуратно, со всеми необходимыми компенсациями. Скорее всего - в спектральной области. Ниже приведены картинки.
- фрагменты исходных сигналов.
- склейка без разворота фазы. Виден её скачок.
- склейка с разворотом фазы. Небольшая "некрасивость" в месте стыковки объясняется "переходным процессом" в гильбертовом фильтре. Поправить несложно, но возиться лень - на результат она практически не влияет.
- фрагмент спектров склеек. Синий - без разворота, красный - с разворотом. Разрешение по частоте увеличилось по сравнению с исходными кусками в 2 раза!
Сообщение отредактировал Stanislav - Aug 2 2008, 07:52
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Aug 2 2008, 09:01
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(Stanislav @ Aug 2 2008, 04:00) 
- фрагмент спектров склеек. Синий - без разворота, красный - с разворотом. Разрешение по частоте увеличилось по сравнению с исходными кусками в 2 раза!  Маклауд такие синусоиды считает значительно точнее, в разы. Вы же сами утвеждали, что разрешение для идеальной одиночной синусоиды не определено. Дайте две. Или лучше внесём в модель фазовые шумы, возьмём толстый фломастер и напишем на крышке прибора: " Прибор для измерения фазовых шумов генератора посредством экстраполяции фазы" и подпись "барон Мюнхаузен"  ЗЫ. Вообще-то постановка задачи у автора опять не получилась. Если идеальная синусоида - то спектр её делта-функция. Осталось оценить частоту. Как было сказано - это не тот случай. Значит скорее всего - это узкополосный сигнал, например сигнал аналогового генератора. Или DDS. Или шум пропущенный через узкополосный фильтр. Нужно, оценить уширение спектра с целью определить параметры стабильности. Что-то в этом духе
|
|
|
|
|
Aug 2 2008, 15:15
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(fontp @ Aug 2 2008, 13:01)  Маклауд такие синусоиды считает значительно точнее, в разы. Странно, что Вы упорно не желаете понять простой вещи: Автору темы нужно не точное измерение частоты гармонического сигнала, а получение модуля спектральной функции с разрешением по частоте более высоким, чем даёт каждая из накопленных последовательностей.Найти частоту гармонического сигнала с хорошей точностью при таком отношении С/Ш можно и без Маклауда. ЗЫ. Так Маклауд, или всё-таки "не-Маклауд"? Как по-русски писать правильно? Цитата(fontp @ Aug 2 2008, 13:01)  ...Вы же сами утвеждали, что разрешение для идеальной одиночной синусоиды не определено. Дайте две. Это был только набросок алгоритма, ещё не работающий, как положено. Две частоты дам ниже. Цитата(fontp @ Aug 2 2008, 13:01)  ...Или лучше внесём в модель фазовые шумы, возьмём толстый фломастер и напишем на крышке прибора: " Прибор для измерения фазовых шумов генератора посредством экстраполяции фазы" и подпись "барон Мюнхаузен"  Чушь. Шумы в модели присутствуют. Для проверки разрешения синусоид достаточно. Кроме того, Вы не поняли сути предложенного метода : ни о какой "экстраполяции фазы" речь здесь не идёт. Цитата(fontp @ Aug 2 2008, 13:01)  ...ЗЫ. Вообще-то постановка задачи у автора опять не получилась. Если идеальная синусоида - то спектр её делта-функция. Осталось оценить частоту. Как было сказано - это не тот случай. Что Вам не нравится в постановке? По-моему, теперь все необходимые данные есть. Цитата(fontp @ Aug 2 2008, 13:01)  ...Значит скорее всего - это узкополосный сигнал, например сигнал аналогового генератора. Или DDS. Или шум пропущенный через узкополосный фильтр. Нужно, оценить уширение спектра с целью определить параметры стабильности. Что-то в этом духе Ну, наконец-то... Я об этом с начала темы талдычу. Да и EKrishin писал недвусмысленно, что ему нужен именно спектр сигнала вблизи основной частоты. Просто удивительно, что там могло быть непонятного? ............................................................................. Вот доработанный алгоритм. С ним уже можно поиграться - попробовать менять частоту и сдвиг фаз. Частота предполагается известной, чтобы не загромождать код. Второй гармонический тон меньшей амплитуды добавлен. Код function phase_adj() fsampl = 1000; % частота дискретизации, кГц freq = 40; % частота гармонического тона, кГц
len_buf = 4096; % длина буфера, отсчёты shift = pi; % величина фазового сдвига между кусками, рад
% Заполняем буферы сигналом и аддитивным шумом buffer_1 = sin(2*pi*(0:len_buf-1)*freq/fsampl)+(1e-5)*randn(1,len_buf); buffer_1 = buffer_1+0.03*sin(2*pi*(0:len_buf-1)*(freq+0.5)/fsampl);
shift_1=shift; % не корректно; токмо для ускорения процесса
buffer_2 = sin(2*pi*(0:len_buf-1)*freq/fsampl+shift)+(1e-5)*randn(1,len_buf); buffer_2 = buffer_2+0.03*sin(2*pi*(0:len_buf-1)*(freq+0.5)/fsampl+shift_1);
% Пытаемся склеить без учёта фазовых соотношений sum_buf_1 = [buffer_1, buffer_2];
% Делаем оценку спектров кусков и склейки, используя спектральные окна specw_1=fft(hamming(len_buf)'.*buffer_1); specw_2=fft(hamming(len_buf)'.*buffer_2); sp_sum_1=fft(hamming(2*len_buf)'.*sum_buf_1);
% Находим фазовые спектры кусков ang_1 = angle(specw_1); ang_2 = angle(specw_2);
% Находим положение максимума модуля спектральной функции [max_1, frq_1] = max(abs(specw_1));
% Находим разность фаз diff=ang_1(frq_1)-ang_2(frq_1); dif_ang=mod(diff+2*pi*freq/fsampl*len_buf, 2*pi);
% Находим поворачивающий множитель для частоты основного тона rotator=exp(i*dif_ang);
% Преобразуем второй буфер в комплексный вид buf_2_hilb=hilbert(buffer_2);
% Разворачиваем его на величину сдвига фаз (более правильно делать сдвиг во времени) buf_2_rot=real(buf_2_hilb*rotator);
% Склеиваем sum_buf_2 = [buffer_1, buf_2_rot];
% Находим модуль спектра склейки sp_sum_2=fft(hamming(2*len_buf)'.*sum_buf_2);
% Выводим результаты figure (1) plot (1:100, buffer_1(1:100)) hold on plot (1:100, buffer_2(1:100), 'r') hold off ylim([-1.5 1.5]); grid on title ('Signals')
figure (2) plot ((4046:4146), sum_buf_1(4046:4146)) ylim([-1.5 1.5]); grid on title ('Glue 1')
figure (3) plot ((4046:4146), sum_buf_2(4046:4146), 'Color', [0.9 0 0]) ylim([-1.5 1.5]); grid on title ('Glue 2')
figure (4) semilogy (1:1000, abs(sp_sum_2(1:1000))) grid on title ('Spectrum of long sequence')
figure (5) semilogy (1:1000, abs(specw_1(1:1000))) grid on title ('Spectrum of short sequence') return; fontp, наблюдайте внимательно:
- модуль спектра последовательности одинарной длины,
- модуль спектра последовательности двойной длины, полученной путём "склеивания". И никаких Маклаудов. ................................................... Далее, если позволит время, попробую сделать то же самое через Фурье - должно получиться красивее.
Сообщение отредактировал Stanislav - Aug 2 2008, 17:03
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Aug 2 2008, 17:17
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата
- модуль спектра последовательности двойной длины, полученной путём "склеивания". И никаких Маклаудов. ................................................... Далее, если позволит время, попробую сделать то же самое через Фурье - должно получиться красивее.  Фаза второй палки (shift_1) у Вас удачно попала  . Если взять shift_1 = 1 то от второй палки рожки да ножки остаются ...
--------------------
ну не художники мы...
|
|
|
|
|
Aug 2 2008, 17:31
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(alex_os @ Aug 2 2008, 21:17)  Фаза второй палки (shift_1) у Вас удачно попала  . Если взять shift_1 = 1 то от второй палки рожки да ножки остаются ... Это верно. Там сдвиг фаз второй синусоиды берётся "от балды", о чём и написано в каменте (см. текст программы), и поэтому подобрана "хорошая" частота второй синусоиды. Но, если посчитать её фазу аккуратно, а потом ещё ввести при формировании комплексного сигнала коррекцию фазы по частоте (или, проще, сдвиг во времени), то всё будет в ажуре.  Корректирующий фильтр считать лень, но, если время будет, сделаю... Попробую в базисе Фурье алгоритм реализовать, только попожже. На коротких кусках же разрешить вторую частоту вообще не удаётся...
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Aug 2 2008, 17:41
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(Stanislav @ Aug 2 2008, 21:31)  Это верно. Там сдвиг фаз второй синусоиды берётся "от балды", о чём и написано в каменте (см. текст программы), и поэтому подобрана "хорошая" частота второй синусоиды. Но, если посчитать её фазу аккуратно, а потом ещё ввести при формировании комплексного сигнала коррекцию фазы по частоте (или, что проще, сдвиг во времени), то всё будет в ажуре.  Корректирующий фильтр считать лень, но, если время будет, сделаю... Попробую в базисе Фурье алгоритм реализовать, только попожже. На коротких кусках же разрешить вторую частоту вообще не удаётся... А откуда Вы узнаете сдвиг во времени если задержка между блоками не известна?!
--------------------
ну не художники мы...
|
|
|
|
|
Aug 2 2008, 17:45
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(alex_os @ Aug 2 2008, 21:41)  А откуда Вы узнаете сдвиг во времени если задержка между блоками не известна?! Измерить! Ну, ей-богу... Если какие-то величины не известны, кто мешает их получить из сигнала, или самого процесса ввода данных? Такая простая мысль, как видно, не посещает многих читателей умных книжек. Как я и писал уже, слишком точно временнОй сдвиг измерять и не нужно. Но детали следует обдумать.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
Сообщений в этой теме
EKirshin Увеличение разрешения по частоте Jul 30 2008, 15:01 GetSmart А повысить разрешение методом интерполяции не кати... Jul 30 2008, 15:56 Stanislav Цитата(EKirshin @ Jul 30 2008, 19:01) Ест... Jul 30 2008, 16:43 GetSmart Цитата(Stanislav @ Jul 30 2008, 22:43) Сп... Aug 1 2008, 08:56 GetSmart Цитата(Stanislav)Скажите, каким образом интерполяц... Jul 30 2008, 17:17 fontp Цитата(GetSmart @ Jul 30 2008, 21:17) fon... Jul 30 2008, 17:57 Stanislav Цитата(GetSmart @ Jul 30 2008, 21:17) fon... Jul 30 2008, 18:18  fontp Цитата(Stanislav @ Jul 30 2008, 22:18) По... Jul 30 2008, 18:27   Stanislav Цитата(fontp @ Jul 30 2008, 22:27) Отчаст... Jul 30 2008, 18:49    fontp Цитата(Stanislav @ Jul 30 2008, 22:49) ЗЫ... Jul 31 2008, 07:26     GetSmart Цитата(fontp @ Jul 31 2008, 13:26) Когере... Jul 31 2008, 08:01      fontp Цитата(GetSmart @ Jul 31 2008, 12:01) Как... Jul 31 2008, 08:19     Stanislav Цитата(fontp @ Jul 31 2008, 11:26) Запрос... Jul 31 2008, 09:05      fontp Цитата(Stanislav @ Jul 31 2008, 13:05) За... Jul 31 2008, 09:15       Stanislav Цитата(fontp @ Jul 31 2008, 13:15) Если к... Jul 31 2008, 09:31        fontp Цитата(Stanislav @ Jul 31 2008, 13:31) Те... Jul 31 2008, 09:33    EKirshin Цитата(Stanislav @ Jul 30 2008, 22:49) От... Jul 31 2008, 16:14     shf_05 Цитата(EKirshin @ Jul 31 2008, 22:14) Про... Aug 1 2008, 07:07      fontp Цитата(shf_05 @ Aug 1 2008, 11:07) я бы д... Aug 1 2008, 08:56      EKirshin Цитата(shf_05 @ Aug 1 2008, 11:07) так ли... Aug 1 2008, 09:44       fontp Цитата(EKirshin @ Aug 1 2008, 13:44) Нет,... Aug 1 2008, 09:51     fontp Цитата(EKirshin @ Jul 31 2008, 20:14) Про... Aug 1 2008, 07:07     Stanislav Цитата(EKirshin @ Jul 31 2008, 20:14) ...... Aug 1 2008, 08:31      blackfin Цитата(Stanislav @ Aug 1 2008, 12:31) Вы ... Aug 1 2008, 08:56       Stanislav Цитата(blackfin @ Aug 1 2008, 12:56) А чт... Aug 1 2008, 10:00        fontp Цитата(Stanislav @ Aug 1 2008, 14:00) Пот... Aug 1 2008, 10:03 GetSmart Цитата(Stanislav)Пожалуй, в 1001-й раз приводить е... Jul 30 2008, 18:59 Stanislav Цитата(GetSmart @ Jul 30 2008, 22:59) Ну ... Jul 30 2008, 19:18 GetSmart fontp, согласитесь, что неограниченное увеличение ... Jul 31 2008, 08:42 fontp Цитата(GetSmart @ Jul 31 2008, 12:42) fon... Jul 31 2008, 08:53  GetSmart Цитата(fontp @ Jul 31 2008, 14:53) Теорет... Jul 31 2008, 09:05   fontp Цитата(GetSmart @ Jul 31 2008, 13:05) Вы ... Jul 31 2008, 09:25  Stanislav Цитата(fontp @ Jul 31 2008, 12:53) Теорет... Jul 31 2008, 09:23 RadioJunior а у меня более банальный вопрос: а как вообще оцен... Jul 31 2008, 09:34 fontp Цитата(RadioJunior @ Jul 31 2008, 13:34) ... Jul 31 2008, 10:02 GetSmart Цитата(fontp)А разрешение здесь не при чём. Маклау... Jul 31 2008, 10:40 fontp Цитата(GetSmart @ Jul 31 2008, 14:40) Хва... Jul 31 2008, 10:51 729 Цитата(GetSmart @ Jul 31 2008, 14:40) Есл... Jul 31 2008, 10:58 GetSmart Цитата(fontp)Можете сказать, что это не ДПФ. Может... Jul 31 2008, 11:44 729 Цитата(GetSmart @ Jul 31 2008, 15:44) Во-... Jul 31 2008, 11:57 fontp Цитата(GetSmart @ Jul 31 2008, 15:44) При... Jul 31 2008, 11:59 GetSmart Цитата(fontp)Кстати так и делают во многих приложе... Jul 31 2008, 12:09 729 Цитата(GetSmart @ Jul 31 2008, 16:09) Доп... Jul 31 2008, 12:22 fontp Цитата(GetSmart @ Jul 31 2008, 16:09) Ког... Jul 31 2008, 12:29  AndrewN Цитата(fontp @ Jul 31 2008, 15:29) Так ра... Jul 31 2008, 12:38   blackfin Цитата(AndrewN @ Jul 31 2008, 16:38) Гм. ... Jul 31 2008, 12:42   fontp Цитата(AndrewN @ Jul 31 2008, 16:38) Гм. ... Jul 31 2008, 12:44 GetSmart Цитата(729)Непонятно. Сами частоты (6 штук) можете... Jul 31 2008, 12:25 729 Цитата(GetSmart @ Jul 31 2008, 16:25) 99.... Jul 31 2008, 13:13  GetSmart Цитата(729 @ Jul 31 2008, 19:13) Да, но п... Jul 31 2008, 13:18   729 Цитата(GetSmart @ Jul 31 2008, 17:18) Сме... Jul 31 2008, 13:22    GetSmart Цитата(729 @ Jul 31 2008, 19:22) А вот из... Jul 31 2008, 13:34     729 Цитата(GetSmart @ Jul 31 2008, 17:34) Поч... Jul 31 2008, 13:50 GetSmart Цитата(fontp)Фома Вы не верующий. Так работают все... Jul 31 2008, 12:40 Stanislav Цитата(fontp @ Aug 1 2008, 12:56) Если ра... Aug 1 2008, 10:16 fontp Цитата(Stanislav @ Aug 1 2008, 14:16) Пра... Aug 1 2008, 10:20  Stanislav Цитата(fontp @ Aug 1 2008, 14:20) Вот Вы ... Aug 1 2008, 10:24   fontp Цитата(Stanislav @ Aug 1 2008, 14:24) Пос... Aug 1 2008, 10:30 EKirshin Цитата(Stanislav @ Aug 1 2008, 12:31) Пон... Aug 1 2008, 10:39 729 Цитата(EKirshin @ Aug 1 2008, 14:39) Част... Aug 1 2008, 11:07 GetSmart Цитата(EKirshin @ Aug 1 2008, 16:39) Соот... Aug 1 2008, 11:17  729 Цитата(GetSmart @ Aug 1 2008, 15:17) Чем ... Aug 1 2008, 11:24 Stanislav Цитата(EKirshin @ Aug 1 2008, 14:39) Част... Aug 1 2008, 12:09  GetSmart Цитата(Stanislav @ Aug 1 2008, 18:09) Кто... Aug 1 2008, 13:19   Stanislav Цитата(GetSmart @ Aug 1 2008, 17:19) Stan... Aug 1 2008, 14:27    GetSmart Цитата(Stanislav @ Aug 1 2008, 20:27) Это... Aug 1 2008, 15:26     729 Цитата(GetSmart @ Aug 1 2008, 19:26) Вы и... Aug 1 2008, 15:42  blackfin Цитата(Stanislav @ Aug 1 2008, 16:09) Сей... Aug 1 2008, 14:57   Stanislav Цитата(blackfin @ Aug 1 2008, 18:57) Мы ж... Aug 1 2008, 19:11    shasik Я, конечно, дико извиняюсь, что без стука
Почитайт... Aug 1 2008, 19:19 EKirshin Цитата(GetSmart @ Aug 1 2008, 15:17) Чем ... Aug 1 2008, 15:25 alex_os Цитата(EKirshin @ Aug 1 2008, 19:25) Испо... Aug 1 2008, 17:42  729 Цитата(alex_os @ Aug 1 2008, 21:42) Дык е... Aug 1 2008, 17:55   alex_os [quote name='729' date='Aug 1 2008, 21... Aug 1 2008, 18:36   Stanislav Цитата(729 @ Aug 1 2008, 21:55) Фазировка... Aug 3 2008, 07:28  Stanislav Цитата(alex_os @ Aug 1 2008, 21:42) Дык е... Aug 1 2008, 19:23   alex_os Цитата(Stanislav @ Aug 1 2008, 23:23) А к... Aug 1 2008, 19:32    Stanislav Цитата(alex_os @ Aug 1 2008, 23:32) Дык я... Aug 1 2008, 19:37 729 Цитата(EKirshin @ Aug 1 2008, 19:25) Испо... Aug 2 2008, 20:36 makc За грубость и оффтопик трое участников уже получи... Aug 1 2008, 15:55  GetSmart Цитата(fontp @ Aug 2 2008, 15:01) " ... Aug 2 2008, 10:01   fontp Цитата(Stanislav @ Aug 2 2008, 19:15) Стр... Aug 3 2008, 08:09    Stanislav Цитата(fontp @ Aug 3 2008, 12:09) Слишком... Aug 3 2008, 17:29     GetSmart Цитата(Stanislav @ Aug 3 2008, 23:29) - ... Aug 4 2008, 07:42 Stanislav Вот, немного поправил программу, и подбавил аддити... Aug 3 2008, 07:03 EKirshin Цитата(Stanislav @ Aug 1 2008, 23:37) 2 E... Aug 3 2008, 07:10 alexkok Цитата(EKirshin @ Aug 3 2008, 10:10) Да, ... Aug 5 2008, 16:35 alex_os Сделал модельку аналогичную модели Stanislav'а... Aug 4 2008, 11:40 Stanislav С комплексным сигналом работать проще - гильберта ... Aug 4 2008, 11:48 alexkok Цитата(EKirshin @ Jul 30 2008, 18:01) Воп... Aug 4 2008, 20:06 Stanislav Цитата(alexkok @ Aug 5 2008, 00:06) Я дум... Aug 4 2008, 22:36  alexkok Цитата(Stanislav @ Aug 5 2008, 01:36) Это... Aug 5 2008, 01:05   Stanislav Цитата(alexkok @ Aug 5 2008, 05:05) Повыш... Aug 5 2008, 06:51
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|