
Анализ амплитудно-частотной характеристики (АФЧХ) является ключевым этапом при проектировании и исследовании электронных фильтров, усилителей и систем управления. MATLAB предоставляет набор инструментов для точного расчёта и визуализации АФЧХ, позволяя работать с линейными и нелинейными системами, дискретными и непрерывными сигналами.
Для построения АФЧХ требуется определить передаточную функцию системы, которая может быть задана через коэффициенты числителя и знаменателя, полюса и нули или через модели в формате LTI. После этого MATLAB позволяет вычислить амплитуду и фазу на заданном диапазоне частот с использованием функций freqs для непрерывных систем и freqz для дискретных.
Визуализация АФЧХ включает построение графиков амплитудной и фазовой характеристик. Рекомендуется использовать логарифмическую шкалу частот, чтобы детально рассмотреть поведение системы в низкочастотной и высокочастотной областях. Дополнительно можно использовать функции bode и margin для анализа устойчивости и определения запаса по фазе и амплитуде.
Оптимизация параметров системы возможна через корректировку коэффициентов фильтров или усилителей с последующей проверкой АФЧХ. MATLAB поддерживает автоматическое вычисление критических частот, резонансных пиков и полосы пропускания, что упрощает процесс настройки схем и ускоряет исследовательскую работу.
Подготовка сигнала и определение параметров анализа

Перед построением амплитудно-частотной характеристики (АЧХ) необходимо подготовить исходный сигнал. Если сигнал записан в реальном формате, убедитесь, что он нормализован по амплитуде и не содержит выбросов, которые могут исказить спектральный анализ.
Для цифровых сигналов важно задать частоту дискретизации Fs. Она должна быть как минимум в два раза выше максимальной частоты сигнала согласно теореме Найквиста, чтобы избежать алиасинга. Рекомендуется также проверять длительность сигнала: для устойчивого спектра длина окна анализа должна быть достаточной для точного измерения низких частот.
Определите параметры анализа: размер окна FFT (обычно степени двойки, например 1024 или 2048), перекрытие окон для усреднения и метод оконной функции (Hanning, Hamming или Blackman) для снижения эффекта утечки спектра. Выбор этих параметров напрямую влияет на разрешение по частоте и точность амплитудного спектра.
Если сигнал содержит шум, рекомендуется применить предварительное сглаживание или фильтрацию низких/высоких частот для выделения интересующих компонентов. Для периодических сигналов может потребоваться усреднение нескольких циклов, чтобы получить стабильную АЧХ.
После подготовки сигнала убедитесь, что данные представлены в виде одномерного массива или векторной формы, совместимой с функцией FFT в MATLAB. Корректная подготовка входного сигнала и точное определение параметров анализа минимизируют ошибки и обеспечивают репрезентативность полученной амплитудно-частотной характеристики.
Использование функции fft для вычисления спектра

В MATLAB функция fft выполняет быстрое преобразование Фурье для одномерных сигналов. Она принимает вектор дискретных значений сигнала и возвращает комплексный вектор спектральных коэффициентов.
Для точного анализа спектра важно правильно задать длину преобразования. Если сигнал имеет N отсчетов, рекомендуется использовать fft(x, N), где N – степень двойки, близкая к длине сигнала, что ускоряет вычисления и уменьшает искажения.
Частотная ось формируется через функцию linspace или массив f = (0:N-1)*(Fs/N), где Fs – частота дискретизации. Амплитуда спектра вычисляется как abs(Y)/N, а для отображения мощности часто используют 20*log10(abs(Y)/N) для перевода в децибелы.
Если сигнал реальный, полезно строить спектр только для положительных частот: Y = fft(x); f = Fs*(0:N/2)/N; magnitude = abs(Y(1:N/2+1))/N;. Это исключает дублирование информации и облегчает интерпретацию спектра.
Для снижения эффекта утечки спектра перед вычислением fft рекомендуется применять оконные функции, такие как hann, hamming или blackman: xw = x.*hann(N). Применение окна корректирует амплитуду пиков и делает спектр более читаемым.
Визуализация спектра осуществляется функцией plot(f, magnitude) или semilogx для логарифмического масштаба по частоте, что удобно при анализе широкополосных сигналов.
Построение амплитудно-частотной характеристики
Для построения амплитудно-частотной характеристики (АЧХ) в MATLAB используется функция fft. Правильная нормировка и выбор частотной сетки обеспечивают точное отображение спектра.
Пошаговый алгоритм:
- Определите длину сигнала
Nи частоту дискретизацииFs. - Примените окно к сигналу для уменьшения спектрального утечки:
x_win = x .* hanning(N). - Вычислите преобразование Фурье:
X = fft(x_win, NFFT), гдеNFFT– ближайшая степень 2 большеN(NFFT = 2^nextpow2(N)). - Вычислите амплитуду спектра:
abs(X)/Nи выделите только положительные частоты:Y = 2*abs(X(1:NFFT/2))/N. - Сформируйте вектор частот:
f = Fs*(0:NFFT/2-1)/NFFT. - Постройте график:
plot(f, Y)для линейной шкалы илиplot(f, 20*log10(Y))для децибел.
Рекомендации:
- Использовать окно Ханна или Хэмминга для улучшения точности спектра.
- При необходимости центрировать нулевую частоту применить
fftshift. - Для сигналов с большим числом точек применять
nextpow2для ускорения вычислений. - Проверять масштаб амплитуды, особенно при переходе в децибелы, чтобы избежать отрицательных значений при нулях.
Эта последовательность действий позволяет построить корректную АЧХ и выявить ключевые частотные компоненты сигнала.
Построение фазово-частотной характеристики

Фазово-частотная характеристика (ФЧХ) отражает зависимость фазы сигнала на выходе системы от частоты. В MATLAB её построение обычно выполняется после вычисления комплексного спектра сигнала с помощью функции fft или при анализе частотной характеристики линейной системы через freqz или bode.
Для вычисления ФЧХ вручную используйте отношение выходного спектра к входному и функцию angle, которая возвращает фазу комплексного числа в радианах:
phi = angle(Y), где Y – спектр сигнала.
Далее фазу можно перевести в градусы с помощью функции rad2deg для удобного отображения на графике:
phi_deg = rad2deg(phi);
При построении графика используют plot по оси частоты, предварительно задав диапазон через вектор частот f = (0:N-1)*(Fs/N);, где N – длина FFT, Fs – частота дискретизации. Для удобства анализа фазу часто корректируют, используя unwrap, чтобы устранить скачки на ±π:
phi_unwrapped = unwrap(phi);
В результате строится график зависимости фазы от частоты, который позволяет оценить задержку сигнала, фазовые сдвиги в полосе пропускания и характеристики фильтров. При анализе линейных систем рекомендуется сопоставлять ФЧХ с амплитудно-частотной характеристикой для комплексной оценки поведения системы.
Настройка масштаба и осей графика
Для корректного отображения амплитудно-частотной или фазово-частотной характеристики важно задать диапазон частот и значений. Используйте функцию xlim([f_min f_max]) для ограничения оси частот и ylim([y_min y_max]) для оси амплитуды или фазы. Например, xlim([0 1000]) ограничит график частотами от 0 до 1000 Гц.
При работе с логарифмическими шкалами применяйте set(gca, 'XScale', 'log') для оси X и set(gca, 'YScale', 'log') для оси Y. Это особенно полезно для анализа широкополосных сигналов и фильтров с большим диапазоном частот.
Для улучшения читаемости графика можно задать шаг делений: xticks(0:100:1000) определяет отметки на оси X через каждые 100 Гц, а yticks(-40:10:0) – на оси Y через 10 дБ.
Подписи осей обязательны: xlabel('Частота, Гц') и ylabel('Амплитуда, дБ'). Для фазового графика используйте ylabel('Фаза, градусы'). Точный масштаб и метки позволяют сразу выявить ключевые особенности сигнала, включая резонансы и спад амплитуды.
При необходимости сохранения пропорций графика используйте axis tight или axis equal, чтобы автоматическое масштабирование не искажало соотношение амплитуды и частоты.
Сравнение нескольких сигналов на одной афчх

Для анализа поведения нескольких сигналов одновременно на одной амплитудно-частотной характеристике (АЧХ) в MATLAB используют совмещение графиков с различными цветовыми или стилевыми обозначениями. Это позволяет выявить различия в спектральных характеристиках и оценить влияние параметров фильтров или систем на каждый сигнал.
Последовательность действий:
- Подготовка сигналов: все сигналы должны иметь одинаковую дискретизацию и длительность. Если сигналы разной длины, используйте
resampleилиinterp1для приведения к общему размеру. - Вычисление спектра: для каждого сигнала применяют
fftи нормируют амплитуду относительно числа точекN. Например:
X1 = fft(signal1)/N;
X2 = fft(signal2)/N; - Построение АЧХ: используют команду
plotс указанием частотного вектораf = (0:N-1)*(Fs/N);. Для каждого сигнала выбирают уникальный стиль линии или цвет:
plot(f, abs(X1), 'b', f, abs(X2), 'r'); - Добавление легенды и подписей осей:
legend('Сигнал 1','Сигнал 2');
xlabel('Частота, Гц'); ylabel('Амплитуда'); - Настройка масштаба: при необходимости ограничивают диапазон частот с помощью
xlim([0 Fs/2])для анализа только положительных частот. Для визуального сравнения можно использоватьsemilogxилиloglogдля логарифмического масштаба.
Для наглядности различия между сигналами рекомендуется:
- Использовать контрастные цвета и толщину линий.
- Добавлять сетку (
grid on) для точного сравнения амплитуд на выбранных частотах. - При большом числе сигналов создавать отдельные подграфики с
subplotи объединять легенды вручную. - Применять фильтры или оконные функции (
hamming,hann) для уменьшения утечек спектра при сравнении узких гармоник.
Таким образом, совмещение нескольких сигналов на одной АЧХ в MATLAB обеспечивает быстрый анализ различий в спектральной структуре и позволяет визуально оценить эффект обработки или различие параметров сигналов.
Сохранение и экспорт графиков из MATLAB

Для сохранения графика в MATLAB можно использовать функции saveas и exportgraphics. Функция saveas подходит для сохранения в форматах PNG, JPEG, TIFF, PDF и MATLAB-файлах Figure (.fig). Пример:
saveas(gcf, 'afchx_plot.png')
Функция exportgraphics позволяет сохранять графики с высоким разрешением и без потери качества для публикаций. Пример:
exportgraphics(gca, 'afchx_highres.pdf', 'Resolution', 300)
Для автоматизации экспорта нескольких графиков можно использовать цикл. Пример сохранения нескольких фигур:
for k = 1:length(figs)
figure(figs(k));
exportgraphics(gca, ['figure_' num2str(k) '.png'], 'Resolution', 300);
end
В таблице представлены рекомендуемые форматы и их особенности:
| Формат | Описание | Применение |
|---|---|---|
| PNG | Растровое изображение с поддержкой прозрачности | Отчеты, презентации, веб |
| JPEG | Сжатие с потерями, меньший размер файла | Презентации, публикации с ограниченным размером |
| TIFF | Без потерь, поддержка высокого разрешения | Публикации, печать |
| Векторный формат, масштабирование без потерь | Научные статьи, отчеты | |
| FIG | Сохраняет объект MATLAB Figure для последующего редактирования | Дальнейшая обработка в MATLAB |
Для улучшения качества экспорта следует настраивать размер фигуры через set(gcf,'Position',[x y width height]) и использовать параметры разрешения при exportgraphics. Это обеспечивает одинаковый масштаб и точность линий на всех графиках.
Вопрос-ответ:
Как подготовить сигнал для построения амплитудно-частотной характеристики в MATLAB?
Для построения АЧХ сигнал должен быть представлен в виде массива значений с равными интервалами времени. Необходимо определить частоту дискретизации и длительность сигнала. Если сигнал сложный или содержит шум, полезно применить фильтрацию или оконную функцию, чтобы улучшить точность спектрального анализа. После подготовки сигнала можно использовать функцию fft или freqz для вычисления спектра.
Какая разница между использованием fft и freqz для вычисления спектра в MATLAB?
Функция fft позволяет получить спектр произвольного сигнала, возвращая амплитуды и фазы всех частотных компонентов. Она подходит для анализа сигналов, представленных во временной области. freqz используется для анализа линейных систем и цифровых фильтров, показывая амплитудно-частотную и фазово-частотную характеристики системы. freqz учитывает передаточную функцию фильтра и вычисляет отклик на синусоидальные сигналы, что делает её удобной для оценки поведения фильтров.
Как настроить масштаб и оси графика АЧХ в MATLAB для лучшей читаемости?
Для настройки осей используется функция axis, где можно задать диапазон по оси X и Y. Можно установить линейный или логарифмический масштаб с помощью semilogx, semilogy или loglog для соответствующих осей. Подписи осей задаются функциями xlabel и ylabel, а сетка включается командой grid on. Дополнительно можно использовать xticks и yticks для задания конкретных меток, что облегчает сравнение амплитуд на разных частотах.
Можно ли строить одну график АЧХ для нескольких сигналов одновременно?
Да, MATLAB позволяет отображать несколько сигналов на одном графике. Для этого вычисляется спектр каждого сигнала отдельно, после чего все данные строятся с помощью функции plot с различными цветами или стилями линий. Для удобства анализа стоит добавить легенду через legend, чтобы отличать сигналы друг от друга. Такой подход помогает сравнивать амплитудные характеристики сигналов, выявлять различия и оценивать влияние фильтров.
