PDA

Просмотр полной версии : Нужна помощь в работе с MathLab 6.1


Lolek
28.03.2005, 13:43
Мне нужна помощь в работе с .wav файлами. Вставить файл с расширением .wav и получить в MathLab его спектр для дальнейшей работы с ним. В том числе и Фурье анализ. Кучу книг перерыл, но ничего так и не нашел для работы с этим. Слёзно умоляю мне помочь. Возможно и для MathCad 2000.

crawler
28.03.2005, 18:23
Да запросто.

[y,Fs,nbits] = wavread('mywavfile.wav');
sound(y,Fs)
Y=fft(y);
plot(abs(Y));

Ежу понятно что это пример, и для настоящих данных надо будет делать поправки, но принцип тот же. Пользуй хелп, в Матлабе это самое ценное.

Lolek
12.04.2005, 11:13
Хех... все конечно хорошо если бы я разберался в этом пакете и знал математику. Но проблема заключается в том, что я абсолютно не знаком с данной областью. А руководителю нужно что я сделал проект в этой среде. Мне проще сделать в Си, но против начальства не попрешь.
Дело в том что мне нужно wav файл разложить по Фурье, получить графики (спектр) и таблицу значений. Можно мне подробно расписать что к чему?

Lolek
20.04.2005, 14:06
Люди!!! Очень прошу!!! Помогите бедному студенту... Дайте код в матлабе чтобы файл wav'ский(Звукозапись в формате wav 22 050 Гц; 8 бит; Моно) раскладывал по быстрому преобразованию Фурье с графикой и табличными значениями... а то ну никак... пожалуйстаааа. :молись:

Satan Klaus
21.04.2005, 23:25
Lolek:
Дайте код в матлабе чтобы файл wav'ский(Звукозапись в формате wav 22 050 Гц; 8 бит; Моно) раскладывал по быстрому преобразованию Фурье с графикой и табличными значениями.
Не совсем понятно насчет табличных значений.
А приличный график можно получить, немного изменив код crawler:

N=1024; %количество точек БПФ
Y=fft(y,N);
X=0:22050/(N-1):22050; %Шкала частот
plot(X,abs(Y));

Lolek
22.04.2005, 14:22
Не совсем понятно насчет табличных значений.


Ну просто нужны значения.На точках. Проще сказать числовые значения.

Lolek
03.05.2005, 15:16
А как получить график не только ФЧХ, но и АЧХ?

crawler
03.05.2005, 19:24
У вас, батенька, проблема не только с Матлабом, но и с понятием что делать - а это самое плохое. Советую почитать книжки по DSP (John G. Proakis , Dimitris G. Manolakis. Digital signal processing: principles, algorithms, and applications или Simon S. Haykin.Signals and Systems - эта попроще) Без этого - ничего не поможет.

Satan Klaus : ты в корне не прав по отношению к оси Х. Это же дигитальная частота, а не аналоговая. Значит результат будет в промежутке [-pi,pi] и повторятся каждые 2*пи. К тому же преобразование будет от -22050 до 22050 :)


[y,Fs,nbits] = wavread('your.wav'); % читаем вав
sound(y,Fs);
Y=fftshift(fft(y)); % делаем БПФ - длина зависит только от вектора у
scale=linspace(-pi,pi,length(Y)); % шкала оси Х
figure(1);
plot(scale,abs(Y)); % амплитуда
title('Amplitude');
figure(2);
plot(scale,angle(Y));% фаза
title('Phase');


Если тебе нужна информация по определенной частоте, то формула проста = (точка на шкале Х)*(Fs/2)/pi

Fs - это частота дигитизации (сэмплинга) - короче не знаю как по русски.

crawler
05.05.2005, 11:40
В связи с большим количеством вопросов в личку, читайте http://www.ele.uri.edu/~hansenj/projects/ele436/fft.pdf , а если что будет непонятно - спрашивайте.