2 / 2 / 0
Регистрация: 08.01.2016
Сообщений: 483
|
|||||||||||
1 | |||||||||||
Прямое и обратное Фурье преобразование10.02.2016, 00:32. Показов 5407. Ответов 12
Метки нет Все метки)
(
есть исходный сигнал 'w5'. Пусть это звуковой импульс. Известно, что поглощение спектра этого сигнала с расстоянием происходит по следующему закону:
я пишу код, в котором хочу разложить в спектр исходный сигнал для разных расстояний L с учетом частотно-зависимого поглощения:
соответственно если я код в таком виде, в каком он есть, то симметрия нарушается, и восстановить сигнал (обратное преобразование Фурье) не сделать. На рисунке это то, что у меня получается (неправильно получается ![]() нужно как то изменить код, чтобы функция поглощения H(f,1) применялась к левой и правой стороне спектра симметрично, чтобы затем сделать обратное преобразование Фурье и проследить, как меняется сигнал с расстоянием. есть предложения, как это реализовать?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
10.02.2016, 00:32 | |
Ответы с готовыми решениями:
12
Двумерное прямое и обратное вейвлет-преобразование Хаара, матлаб Обратное преобразование Фурье Обратное преобразование Фурье Обратное преобразование фурье в матлабе |
![]() 938 / 838 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
|
||||||
10.02.2016, 08:48 | 2 | |||||
![]() Решение
Kerim_Geophysic, дык просто скопируйте одну половину вектора во вторую. Только при этом лучше жестко задать размерность fft таким образом:
1
|
529 / 434 / 46
Регистрация: 17.07.2013
Сообщений: 2,223
|
|
10.02.2016, 09:02 | 3 |
В любом случае строку № 8 из цикла корректнее/надо вынести.
1
|
2 / 2 / 0
Регистрация: 08.01.2016
Сообщений: 483
|
||||||||||||||||
10.02.2016, 15:03 [ТС] | 4 | |||||||||||||||
R2D2, помогла Ваша идея с копированием, я немного переделал, под свою задачу и учел тот факт, что ось симметрии находится на уровне nfft/2+1, в левой части спектра на одну гармонику оказывается больше (вроде нулевая частота, те постоянная составляющая).
вот конечный код:
возникает другая проблема, не могу сделать обратное преобразование. тут все очень странно. Если я беру спектр по своему коду для первого столбца ( то есть спектр исходного сигнала, где L=0 и нет затухания) и пытаюсь сделать обратное Фурье преобразование, то у меня получаются комплексные числа.
То есть числа одинаковые, но от своего кода я не могу сделать обратное Фурье, а от fft(w5) обратное Фурье получается хорошо. При чем если скопировать данные переменной с fft(w5) в переменную с KomplSpecr(:,1), то обратное Фурье получается. в чем проблема? прикрепляю файлы с кодом и рабочим листом
0
|
![]() 938 / 838 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
|
|
11.02.2016, 01:28 | 5 |
![]() Решение
Лобовое решение:
y = ifft(..., 'symmetric') А, вообще, конечно, надо делать по уму. И строго проверять симметричность. Тогда и проблем быть не должно. И кстати, не обязательно гнать цикл. Затухание можно организовать и перемножив Ваш массив спектров и массив в столбцах которого соответственно функции затухания.
1
|
2 / 2 / 0
Регистрация: 08.01.2016
Сообщений: 483
|
|
11.02.2016, 01:50 [ТС] | 6 |
R2D2, спасибо огромное! Вы снова мне очень помогли))
так и сделаю, ато я зациклился на этих циклах.
0
|
![]() 938 / 838 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
|
|
11.02.2016, 02:05 | 7 |
Kerim_Geophysic, и правильно)) Циклы в матлабе - зло. Кроме случаев, когда они неизбежны))
fft, кстати, если в нее передать матрицу - вычислит БПФ по столбцам (у Вас это каналы, как я понимаю). Это я так, на всякий случай, вдруг не знали...
1
|
2 / 2 / 0
Регистрация: 08.01.2016
Сообщений: 483
|
|
11.02.2016, 02:12 [ТС] | 8 |
R2D2, и снова спасибо)) потому, что я хотел писать цикл для обратного преобразования по каждому столбцу (как Вы правильно заметили - каналу), но вовремя увидел Ваш ответ)) спасибо за совет))
0
|
![]() 938 / 838 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
|
||||||
11.02.2016, 17:28 | 9 | |||||
Kerim_Geophysic, Ваш файлик с переменными переименовал в spectrums.m (так мне спокойнее). Проверяйте, не исключено, что где то косяк. Просто хотел показать принцип. Понимаю, что код не очевиден, поэтому если с чем то не разберетесь - спрашивайте.
1
|
![]() 938 / 838 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
|
|
11.02.2016, 17:37 | 10 |
А на рисунке - результат обратного БПФ. Тоже пришлось использовать параметр 'symmetric'.
1
|
2 / 2 / 0
Регистрация: 08.01.2016
Сообщений: 483
|
|
11.02.2016, 18:00 [ТС] | 11 |
R2D2,
я называю файлы с моим именем, чтобы не перепутать то, что я написал с тем, что я где-то скачал=)) ато я создаю, потом удаляю, если мне не нравится
мне 10 строка непонятна. Я прочитал, что команда flipud(Ls) отобразит симметрично строки переменной Ls. Для чего квадратные скобки там?
0
|
![]() 938 / 838 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
|
|
11.02.2016, 18:31 | 12 |
Kerim_Geophysic, квадратные скобки - это так же, как мы задаем обычную матрицу. К примеру
M = [1 2 3 4; 5 6 7 8]; Но здесь не числа в явном виде, а переменные. У нас спектр зеркальный вот и функцию затухания я так же делаю зеркальной. Сначала считаю одну половинку, а потом приставляю к ней вторую но "задом на перед" (если быть точним, то "сверху вниз", т.к. функцию затухания я по столбцам записал).
1
|
2 / 2 / 0
Регистрация: 08.01.2016
Сообщений: 483
|
||||||
11.02.2016, 18:52 [ТС] | 13 | |||||
R2D2, понял, спасибо
я вчера вот так сделал:
0
|
11.02.2016, 18:52 | |
Помогаю со студенческими работами здесь
13
Обратное преобразование Фурье, отсекание повторяющегося сигнала Как построить графики с нуля по х? (дискретное и обратное преобразования Фурье) Дискретное прямое вейвлет преобразование Обратное преобразование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |