Теория и обработка сигналов MATLAB в ТОС, страница 5

% Вектор  частот

w = 2*pi*( (0:(N-1))/N );

w = w - 2*pi*(w>=pi)

% Сдвиг FFT к интервалу от -pi до +pi

X = fftshift(X);

w = fftshift(w);

Если функция используется как имеющая единственный выходной параметр, но имеет ряд выходных параметров, то для возврата значения будет использоваться первый из них, т. е. возвращается только var1.  Это может приводить к ошибкам в вычислениях.

MATLAB M-файлы могут содержать операторы условного перехода и циклы.

Условный оператор if в общем виде записывается следующим образом:

if Условие 

Инструкции_1

elseif Условие 

Инструкции_2 

else 

Инструкции_3 

end

Для осуществления множественного выбора (или ветвления) используется конструкция с переключателем типа switch:

switch switch_Bыражение 

case саsе_Выражение 

Список_инструкций

case {саsе_Выражение1, Саsе_выражение2, саsе_ВыражениеЗ....} 

Список_инструкций

otherwise. Список_инструкций

end

Оператор цикла с предусловием имеет вид:

while   <условие>

     <операторы>

end

Оператор цикла for:

for  <переменная> = <начальное значение>:<шаг>:<конечное значение>

<операторы>

end

Досрочное завершение циклов реализуется с помощью операторов break или continue.

 Пример цикла for

for k=1:10

x(k) = cos(k);

end

Создается  1x10 вектор x,  содержащий значения косинуса целых положительных чисел от 1 до 10.

Но это же вычисление более быстро выполняется в  MATLAB с использованием  конструкции вида

k = 1:10;

x = cos(k);

Построение графиков MATLAB

            Matlab имеет исключительно мощную систему для построения различных графиков, а также  их настройки и форматирования. Типы и подтипы графиков Matlab очень разнообразны. Графики выводятся в отдельных графических окнах. На одном графике можно построить множество кривых, отличающихся цветом и типами линий и точек.

Простые команды построения графиков

>>plot(t,y)                       %  График непрерывной функции

>>plot(x1, y1, x2, y2)       %  Графики зависимостей y1 от x1 и  y2 от x1

>>stem(x,y)                     %  График дискретной функции (сигнала)

                   >>stairs(x,y)                      % График в виде ступенчатой линии

>>loglog(f,Y)                   %  График с логарифмическими масштабами по x и y

>>semilogx(f,Y)                % Логарифмический масштаб по x и линейный по y

                   >>polar(phi, r)                    % График  в полярных координатах 

>>xlabel(‘время’)             %  Метка по оси x

>>ylabel(‘Напряжение’)   % Метка по оси y

                   >>legend(‘АЧХ системы‘)  %  Вывод  поясняющей надписи 

>>axis([xmin,  xmax,  ymin,  ymax])     %  Установка масштабов по осям  x и  y

>>figure(n)                         %  Устанавливает фигуру (окно) n  активной

>>subplot(r,c,n)             %  Разбивает графическое окно на  r * c подокон и
                                            %  устанавливает подокно  n в качестве активного.

                   >>grid                                 %  к графику добавляется сетка

                   >>hold on                                        %  позволяет построить несколько графиков в окне

                   >> hold off                           %  отменяет hold on для текущего графика

                   >> text                                 %  позволяет разместить             текст на графике

                   >> zoom on / off                  %  включение / выключение возможности увеличения
%  фрагментов графика с использованием       

%  левой и правой кнопок мыши

      Пример

>> t=linspace(0, 8, 401);

>> x = t.*exp(-t).*cos(2*pi*4*t);

>> figure(1)

>> subplot(2,1,1)

                   >> plot(t,x)

>> xlabel('Time (s)');

>> ylabel('Amplitude')

>> subplot(2,1,2)

>> stem(t,x)

>> axis([0  1 min(x)  max(x)] )

 

                                                                        Рис.1.

В нерусифицированных версиях Matlab вывод надписей (меток, заголовков и др.) на русском языке требует установки вывода кириллицы в графический объект командой вида

set(gca, 'FontName','Times New Roman Cyr','FontSize', 8).

В команде должны устанавливаться имя и размер кириллического шрифта. Команда должна использоваться  в каждом подокне соответствующего графического окна.

Пример.

Fs=1024; % Частота отсчетов

f1=50; % частота гармоники

f2=60;

N=512; % число отсчетов сигнала

n=0:(N-1);

t=0:1/Fs:(N-1)/Fs;  % вектор времени

% генерирование сигнала для анализа

x=cos(2*pi*f1*t)+0.5*cos(2*pi*f2*t)+randn(1,length(t));

plot(t,x), grid  % график сигнала

%  установка вывода кириллицы  в активном графическом окне

set(gca, 'FontName','Times New Roman Cyr', 'FontSize', 10)

title('Сигнал')

xlabel('Время,  c')

                                                                        Рис.2.

Последние версии Matlab позволяют выполнять разнообразную настройку графического окна и его объектов с помощью его меню или панели инструментов  (рис.3).

Редактор свойств вызывается командой Edit | Figure Properties  (рис.3). 

В окне редактора или с помощью контекстного меню по правой кнопке мыши производятся необходимые установки (цвет, размер, тип, толщина  линии и т.п.)  объекта окна графики.

Возможности для подобной интерактивной настройки  графики - очень широкие.

Скругленная прямоугольная выноска: Кнопка
Edit Plot
Скругленная прямоугольная выноска: Меню  Edit

Рис.3.

 

 
 


Рис.4.

Рис.5.

Трехмерная графика Matlab – очень развитая и многообразная, но в курсе «Теория и обработка сигналов» она почти не используется.

Некоторые из команд построения 3D – графиков

      >>plot3(…)    % строит аксонометрическое изображение 3D-поверхности