Перейти к содержанию
    

Как задать значения ф-ций

Здравствуйте. Начал изучать матлаб и появилось несколько вопросов на которые никак не найду ответов. Вопросы глупые конечно, но практики маловато так что...

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, но что то не выходит... :05:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

для этого мне надо построить его дискретное преобразование фурье

Ага, а еще вам нужна миллиметровка и карандаш :)

coef = tf([1 1],[0.5 1 1]);
bode(coef)

 

2) И ещё, как задать скажем такую ф-цию:

h(n) = sin(n)/n, n /= 0;

h(n) = 1/pi, n = 0;

Пробовал при помощи if, но что то не выходит... :05:

А вы покажите, как вы пробовали, а мы поможем...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ничё се :biggrin:

 

А вы покажите, как вы пробовали, а мы поможем...

 

Вот так:

 

if n == 0

h = w/pi

else

h = sin(w*n)/n*pi

end

 

От так :05:

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот так:

 

if n == 0

h = w/pi

else

h = sin(w*n)/n*pi

end

 

От так :05:

Такая запись должна работать для скалярных n. Если у вас n - вектор (MATLAB же), то лучше как-то так:

 

function h = myfun(n)
h = sin(n)./n;
h(n == 0) = 1/pi;

 

А потом можно делать так:

plot(myfun(-2:0.1:2))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ух ты, спасибо за помощь :) Правда с функцией tf не совсем ясно, но надо повнимательней описание почитать...

Изменено пользователем Грендайзер

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ух ты, спасибо за помощь :) Правда с функцией tf не совсем ясно, но надо повнимательней описание почитать...

Конечно, читайте help, особенно по Control System Toolbox (и примеры в документации) - там все разжевано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте. Начал изучать матлаб

 

Почитайте книгу Matlab для студента.

http://www.booksgid.com/humanities/1720-ma...a-studenta.html

Где скачать найдете сами :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если передаточная ф-я фильтра то можно freqz:

 

freqz Frequency response of digital filter

[H,W] = freqz(B,A,N) returns the N-point complex frequency response

vector H and the N-point frequency vector W in radians/sample of

the filter:

 

jw -jw -jmw

jw B(e) b(1) + b(2)e + .... + b(m+1)e

H(e) = ---- = ------------------------------------

jw -jw -jnw

A(e) a(1) + a(2)e + .... + a(n+1)e

 

given numerator and denominator coefficients in vectors B and A.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2) И ещё, как задать скажем такую ф-цию:

h(n) = sin(n)/n, n /= 0;

h(n) = 1/pi, n = 0;

Пробовал при помощи if, но что то не выходит... :05:

doc sinc

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почитайте книгу Matlab для студента.

Спасибо, обязательно посмотрю :)

Если передаточная ф-я фильтра то можно freqz:

Да, я видел эту функцию, спасибо. Правда меня больше интересовало преобразование Фурье и я как раз нашёл нужную функцию - fft. Если вдруг кому понадобится, вот здесь http://blogs.mathworks.com/steve/2010/06/2...-output-of-fft/ класно расписано с примерами. Правда не допёр как отобразить лишь пол периода преобразования, а не весь период...

 

doc sinc

 

doc sinc - это sin(x)/x ?

Изменено пользователем Грендайзер

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

doc sinc - это sin(x)/x ?

Эта команда откроет справку по функции sin(pi*x)/(pi*x). Да, это обычный синк.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, это обычный синк.

Ясно, спасибо. Правда данную ф-цию я привёл скорей как пример, мне просто было интересно как описать ф-цию заданную таким образом...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Снова здравствуйте. Продолжаю осваивать 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))         % Строим ФЧХ

Так вот с АЧХ всё нормально, но вот ФЧХ - какая то кракозябра (см. рисунок). Из за чего это и как с этим бороться?

post-64451-1473942713_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Снова здравствуйте. Продолжаю осваивать Matlab и тут вот столкнулся с такой проблемой. Написал кодик для того, что бы построить АЧХ и ФЧХ:

...

Посмотрите это

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я пробовал использовать эту ф-цию... но всё стало ещё непонятней...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...