|
Как задать значения ф-ций, Начал изучать матлаб и тут понеслось... |
|
|
|
Aug 31 2016, 12:20
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Здравствуйте. Начал изучать матлаб и появилось несколько вопросов на которые никак не найду ответов. Вопросы глупые конечно, но практики маловато так что... 1) Имею значения коэффициентов передаточной ф-ции (допустим фильтра), ну и хочу посмотреть его АЧХ, для этого мне надо построить его дискретное преобразование фурье, т.е. h(n) = h(n0) + h(n1) + ... + h(N-1); H(jw) = h(0) + h(n1)*exp(-jw) + h(n2)*exp(-2jw) +...+ h(N-1)*exp(-(N-1)jw) Собственно если коэффициентов h не много всё нормално, но если их количество растёт, то прописывать умножение каждого из них на экспоненту становится нудной задачкой... Вообщем можно это дело как то оптимизировать? Никак не допру... Матлаб ругается, т.к. ему нужно совпадение размера матриц, а круговую частоту w я обычно задаю так w = [1:500]*pi/500 или что то в этом духе, количество же коэффициентов значительно меньше. 2) И ещё, как задать скажем такую ф-цию: h(n) = sin(n)/n, n /= 0; h(n) = 1/pi, n = 0; Пробовал при помощи if, но что то не выходит...
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 19)
|
Aug 31 2016, 12:27
|
Участник

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

|
Цитата(Грендайзер @ Aug 31 2016, 15:20)  для этого мне надо построить его дискретное преобразование фурье Ага, а еще вам нужна миллиметровка и карандаш  CODE coef = tf([1 1],[0.5 1 1]); bode(coef)
Цитата(Грендайзер @ Aug 31 2016, 15:20)  2) И ещё, как задать скажем такую ф-цию: h(n) = sin(n)/n, n /= 0; h(n) = 1/pi, n = 0; Пробовал при помощи if, но что то не выходит...  А вы покажите, как вы пробовали, а мы поможем...
|
|
|
|
|
Aug 31 2016, 13:01
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Ничё се Цитата(MiPe @ Aug 31 2016, 15:27)  А вы покажите, как вы пробовали, а мы поможем... Вот так: if n == 0 h = w/pi else h = sin(w*n)/n*pi end От так
|
|
|
|
|
Aug 31 2016, 13:09
|
Участник

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

|
Цитата(Грендайзер @ Aug 31 2016, 16:01)  Вот так: if n == 0 h = w/pi else h = sin(w*n)/n*pi end От так  Такая запись должна работать для скалярных n. Если у вас n - вектор (MATLAB же), то лучше как-то так: CODE function h = myfun(n) h = sin(n)./n; h(n == 0) = 1/pi; А потом можно делать так: CODE plot(myfun(-2:0.1:2))
|
|
|
|
|
Aug 31 2016, 13:24
|
Участник

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

|
Цитата(Грендайзер @ Aug 31 2016, 16:19)  Ух ты, спасибо за помощь  Правда с функцией tf не совсем ясно, но надо повнимательней описание почитать... Конечно, читайте help, особенно по Control System Toolbox (и примеры в документации) - там все разжевано.
|
|
|
|
|
Aug 31 2016, 15:45
|
Знающий
   
Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748

|
Цитата(Грендайзер @ Aug 31 2016, 15:20)  2) И ещё, как задать скажем такую ф-цию: h(n) = sin(n)/n, n /= 0; h(n) = 1/pi, n = 0; Пробовал при помощи if, но что то не выходит...  Цитата doc sinc
|
|
|
|
|
Sep 1 2016, 08:05
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Цитата Почитайте книгу Matlab для студента. Спасибо, обязательно посмотрю Цитата Если передаточная ф-я фильтра то можно freqz: Да, я видел эту функцию, спасибо. Правда меня больше интересовало преобразование Фурье и я как раз нашёл нужную функцию - fft. Если вдруг кому понадобится, вот здесь http://blogs.mathworks.com/steve/2010/06/2...-output-of-fft/ класно расписано с примерами. Правда не допёр как отобразить лишь пол периода преобразования, а не весь период... Цитата doc sinc doc sinc - это sin(x)/x ?
Сообщение отредактировал Грендайзер - Sep 1 2016, 08:11
|
|
|
|
|
Sep 1 2016, 08:21
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Цитата Да, это обычный синк. Ясно, спасибо. Правда данную ф-цию я привёл скорей как пример, мне просто было интересно как описать ф-цию заданную таким образом...
|
|
|
|
|
Sep 15 2016, 12:31
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Снова здравствуйте. Продолжаю осваивать Matlab и тут вот столкнулся с такой проблемой. Написал кодик для того, что бы построить АЧХ и ФЧХ: Код >> F = 800; Fs = 8000; N = 100; n = 0:N-1; >> x = cos(2*pi*F*n/Fs); % формируем наш сигнал >> Ft = fft(x); % делаем преобразование фурье >> % строим графики >> subplot(2,1,1) >> stem(n, abs(Ft)) % Строим АЧХ >> subplot(2,1,2) >> plot(n, angle(Ft)) % Строим ФЧХ Так вот с АЧХ всё нормально, но вот ФЧХ - какая то кракозябра (см. рисунок). Из за чего это и как с этим бороться?
Эскизы прикрепленных изображений
|
|
|
|
|
Sep 15 2016, 14:54
|

Начинающий профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648

|
Цитата(Грендайзер @ Sep 15 2016, 17:35)  Я пробовал использовать эту ф-цию... но всё стало ещё непонятней... Цитата Написал кодик для того, что бы построить АЧХ и ФЧХ: Я не обратил внимание на эти термины. НЕТ у сигнала АЧХ и ФЧХ, есть амплитудный и фазовый спектры! Курс радиотехнические цепи и сигналы в помощь, учебники есть. Заодно и книгу Сергиенко А.Б. по цифровой обработке сигналов надо почитать. Функцию unwrap в данном случае использовать смысла нет, она как раз для построения ФЧХ и нужна. По фазовому спектру: посмотрите данные FFT и обнаружите, что результаты представляют собой весьма малые числа, как в вещественной, так и в мнимой частях. При вычислении аргумента комплексного числа в этом случае потеря точности практически неизбежна. Откуда Ваш изрезанный график. К тому же, у Вас кратна частота сигнала частоте дискретизации. Поставьте частоту 801, 805 и графики сильно изменятся. Будут, на мой взгляд, более осмысленными для первоначального понимания. Ничего фантастического у Вас нет, все объяснимо.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Sep 15 2016, 15:17
|
Знающий
   
Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748

|
Цитата(Грендайзер @ Sep 15 2016, 16:35)  Я пробовал использовать эту ф-цию... но всё стало ещё непонятней... Она убирает скачки фазы на 2pi. Только и всего. Цитата(mdmitry @ Sep 15 2016, 17:54)  Функцию unwrap в данном случае использовать смысла нет, она как раз для построения ФЧХ и нужна. Есть смысл, никуда от этих скачков не деться, что для фазового спектра, что для ФЧХ.
|
|
|
|
|
Sep 15 2016, 16:57
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Цитата(mdmitry @ Sep 15 2016, 17:54)  Я не обратил внимание на эти термины. НЕТ у сигнала АЧХ и ФЧХ, есть амплитудный и фазовый спектры! Курс радиотехнические цепи и сигналы в помощь, учебники есть. Заодно и книгу Сергиенко А.Б. по цифровой обработке сигналов надо почитать. Да, да... Конечно же Вы правы... Я имел в виду именно амплитудный и фазовый спектры... видимо мозг решил выкрутиться короткими сокращениями вместо того что бы писать длинные слова. Цитата По фазовому спектру: посмотрите данные FFT и обнаружите, что результаты представляют собой весьма малые числа, как в вещественной, так и в мнимой частях. Обращал. Так оно и есть. Как я понял это происходит из за неточности представления дробных чисел машиной. Но как это исправить... Цитата При вычислении аргумента комплексного числа в этом случае потеря точности практически неизбежна. Откуда Ваш изрезанный график. К тому же, у Вас кратна частота сигнала частоте дискретизации. Поставьте частоту 801, 805 и графики сильно изменятся. Будут, на мой взгляд, более осмысленными для первоначального понимания. Каким образом это должно помочь? И что плохого в том, что частоты кратны? Поставил частоту косинусоиды 801, и ситуация резко поменялась... но почему?
Сообщение отредактировал Грендайзер - Sep 15 2016, 17:06
|
|
|
|
|
Sep 15 2016, 18:01
|
Знающий
   
Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748

|
Цитата(Грендайзер @ Sep 15 2016, 19:57)  И что плохого в том, что частоты кратны? Увидите эффект растекания. P.S. К моему предыдущему сообщению. Не заметил, что фаза у вас равна нулю, поэтому о фазовом спектре говорить не приходится. То, что я писал про unwrap, - это общий случай. В вашем случае фаза должна быть равна нулю на всех частотах, а из-за погрешности вычислений, как вам сказали, она принимает именно такие значения.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|