Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

c++, Matlab

.pdf
Скачиваний:
98
Добавлен:
30.03.2015
Размер:
1 Mб
Скачать

Д. А. Титов, А. В. Косых, Е. А. Фадина

ЯЗЫКИ ПРОГРАММИРОВАНИЯ

C++ / Matlab

Омск Издательство ОмГТУ

2013

1

МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«Омский государственный технический университет»

Д. А. Титов, А. В. Косых, Е. А. Фадина

ЯЗЫКИ ПРОГРАММИРОВАНИЯ

C++ / MATLAB

Учебное электронное издание локального распространения

Омск Издательство ОмГТУ

2013

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

Авторы:

Д. А. Титов, к.т.н., доцент; А. В. Косых, д.т.н., доцент; Е. А. Фадина (текст издания)

Рецензенты:

А. К. Ельцов, к.т.н., доцент;

П. И. Коротков, к.т.н.

Редактор М. А. Болдырева

Компьютерная верстка А. Ю. Углиржа

Рекомендовано редакционно-издательским советом Омского государственного технического университета

Издательство ОмГТУ

644050, Омск, пр. Мира, 11 Е-mail: info@omgtu.ru

© ОмГТУ, 2013

2

ВВЕДЕНИЕ

Внастоящее время при разработке радиоэлектронных систем и комплексов прослеживается необходимость интегрирования радиотехнических устройств

сперсональными компьютерами и сетями передачи данных. Управление сложными радиоэлектронными системами, а также различными промышленными объектами производится посредством высокопроизводительных устройств вычислительной техники. При этом управление часто осуществляется с использованием распределенной системы, т. е. с помощью нескольких ПК, объединенных в сеть. Это не только позволяет дистанционно выполнять различные функции (контроль, измерение, идентификация и т. д.), но и обеспечивает доступ

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

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

сэтим специализированные программы для ПК должны выполнять множество сложных интеллектуальных функций. Программа должна не только предоставлять пользователю набор окон, кнопок, визуальных эффектов и т. д., но и взаимодействовать с «железом» ПК и внешних устройств. Разработка таких программ требует более высокой квалификации программиста, так как он должен обладать знаниями аппаратной части компьютера.

Данный лабораторный практикум позволяет выполнить практические задания по разработке оконных приложений для операционных систем Windows XP / Windows 7, осуществляющих взаимодействие с различными интерфейсами ПК.

Впрактикуме приняты следующие сокращения:

ПО – программное обеспечение; ПК – персональный компьютер; ЦОС – цифровая обработка сигналов.

К выполнению лабораторных работ рекомендуется допускать студентов, прошедших предварительное обучение основам работы в программных средах Matlab и C++ Builder. Лица, выполняющие лабораторные работы, должны иметь навыки разработки программ на языке C++.

Необходимо соблюдать последовательность выполнения лабораторных работ в соответствии с их номерами.

3

ЛАБОРАТОРНАЯ РАБОТА 1

ОСНОВЫ РАБОТЫ В ПРОГРАММНОЙ СРЕДЕ

MATLAB

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

Задание к работе

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

2.Вычислить значение переменной по заданию преподавателя.

3.Задать два одномерных массива, провести операции сложения, вычитания, произведения и деления их элементов, изучить функции для работы с массивами.

4.Сделать выводы по результатам работы.

Пояснения к работе

Программная среда Matlab включает интерпретатор команд на языке высокого уровня, графическую систему и большое количество специализированных пакетов расширения. Для реализации среды использован язык C. При запуске Matlab 6.x на экране появляется рабочее окно, изображенное на рис. 1.1.

Рабочее окно среды Matlab содержит следующие элементы [1]:

строку меню;

панель инструментов с кнопками и раскрывающимся списком;

вкладку Launch Pad (стартовая платформа), предоставляющую доступ

кразличным модулям и пакетам расширения среды;

вкладку Workspace (рабочая область), отображающую содержимое рабочей области памяти среды;

вкладку Command History (история команд), показывающую историю введенных ранее команд;

вкладку Current Directory (текущая папка);

вкладку Command Window (командное окно) с командной строкой;

строку состояния.

4

Рис. 1.1

Среда Matlab создана таким образом, что любые вычисления можно выполнять в режиме прямых вычислений, т. е. без подготовки программы. Пользователь набирает на клавиатуре вычисляемое выражение, редактирует его (если нужно) в командной строке и завершает ввод нажатием клавиши ENTER. Если необходимо выполнить или отредактировать ранее набранную команду, можно воспользоваться клавишами CTRL + р для подстановки в строку ввода предыдущих команд.

Основные арифметические операции выполняются с помощью традиционных знаков: «+», «–», «*», «/» (деление слева направо), «\» (деление справа налево), «^» (возведение в степень). Если не указана переменная для значения результата вычислений, результат присваивается параметру ans:

>>1+2 ans = 3

Влюбом языке программирования переменные – это объекты, имеющие имена и обладающие способностью хранить некоторые (обычно разные по значению) данные. В зависимости от этих данных переменные могут быть числовыми или символьными, векторными или матричными. Для того чтобы присвоить переменной какое-либо значение, в среде Matlab используется конструкция типа:

Имя_переменной = Выражение

5

Здесь знак равенства используется в качестве оператора присваивания. Пример:

>>z = 1.45

При этом будет создана переменная z и ей присвоено значение, равное 1,4500.

Matlab автоматически распознает тип вводимого пользователем значения и не требует указывать тип переменной. При использовании оператора присваивания результат операции выводится на экран. Часто это не очень удобно, поэтому в Matlab предусмотрено завершение оператора присваивания точкой с запятой для подавления вывода результата в командное окно.

Именем переменной может быть любая последовательность букв и цифр без пробела, начинающаяся с буквы. Строчные и прописные буквы различаются, например MZ и mz являются двумя разными переменными.

Для ввода длинных формул или команд в командную строку следует поставить три точки (подряд, без пробелов), нажать клавишу ENTER и продолжить набор формулы на следующей строке.

Все значения переменных, вычисленные в течение текущего сеанса работы, сохраняются в специально зарезервированной области памяти компьютера, называемой рабочим пространством (Workspace). Командой clc можно стереть содержимое командного окна, однако это не затронет содержимого рабочего пространства. Когда исчезает необходимость в хранении ряда переменных в текущем сеансе работы, их можно стереть из памяти компьютера командой clear или clear(имя_переменной). Для просмотра значения любой переменной из текущего рабочего пространства системы достаточно набрать ее имя и нажать клавишу ENTER [1].

После окончания сеанса работы с системой Matlab все ранее вычисленные переменные теряются. Чтобы сохранить в файле на диске компьютера содержимое рабочего пространства системы Matlab, необходимо последовательно выбрать пункты меню File Save Workspace As…. По умолчанию расширение имени файла «mat», поэтому такие файлы принято называть mat-файлами. Для загрузки в память компьютера ранее сохраненного на диске рабочего пространства нужно последовательно выбрать пункты меню File Load Workspace….

Числа и их форматы

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

z=Rе(x)+Im(x)*i.

6

Такие числа содержат действительную Re(z) и мнимую Im(z) части. Мнимая часть имеет множитель i или j, означающий корень квадратный из –1. Примером ввода комплексных чисел могут служить следующие команды:

>>3i

>>2j

>>2+3i

>>–3.141i

Комплексные числа при умножении, делении и возведении в степень необходимо заключать в круглые скобки:

>> (2.1+3.2i)*2+(4.2+1.7i)^2

Для вычисления комплексно-сопряженного числа применяется апостроф, который следует набирать сразу за числом, без пробела:

>> 23i'

По умолчанию Matlab выдает числовые результаты в нормализованной форме с четырьмя цифрами после десятичной точки и одной до нее. Многих пользователей такая форма представления не всегда устраивает. Поэтому при работе с числовыми данными можно задавать различные форматы представления чисел. Для установки формата представления чисел используется команда format name, где name – имя формата. Возможные значения параметра name представлены в табл. 1.1.

 

Таблица 1.1

 

 

Имя формата

Краткое описание

short

короткое представление в фиксированном формате (5 знаков)

short e

короткое представление в экспоненциальном формате (5 зна-

ков мантиссы и 3 знака порядка)

 

long

длинное представление в фиксированном формате (15 знаков)

long e

длинное представление в экспоненциальном формате (15 зна-

ков мантиссы и 3 знака порядка)

 

hex

представление чисел в шестнадцатеричной форме

bank

представление для денежных единиц

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

Требуемый формат вывода результата также можно задать выбрав пункты меню File Preferences.

7

Константы и системные переменные

Константа – это предварительно определенное числовое или символьное значение, представленное уникальным именем. Числа (например 1, –2 и 1.23) являются безымянными числовыми константами.

В Matlab существуют также системные константы [1]: i или j – мнимая единица (корень квадратный из –1); pi – число π, т. е. 3.1415926…;

eps – погрешность операций над числами с плавающей точкой; realmin – наименьшее число с плавающей точкой;

realmax – наибольшее число с плавающей точкой; inf – значение машинной бесконечности;

ans – переменная, хранящая результат последней операции и обычно вызывающая его отображение на экране дисплея;

NaN – указание на нечисловой характер данных (Not-a-Number). Символьная константа – это последовательность символов, заключенных

в апострофы, например:

>>'Hello my friend!'

>>'Привет'

>>'2+3'

Если в апострофы помещено математическое выражение, то оно не вычисляется и рассматривается просто как цепочка символов. Так что ввод символов '2+3' не будет возвращать число 5. Однако с помощью специальных функций преобразования символьные выражения могут быть преобразованы в вычисляемые.

Использование элементарных функций

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

>>help elfun

Список специальных функций выводится на экран с помощью команды

>>help specfun

Ниже перечислены основные функции Matlab.

8

Базовые функции

abs – абсолютное значение;

angle – аргумент комплексного числа;

real, imag – действительная и мнимая части комплексного числа; conj – операция комплексного сопряжения;

sign – вычисление знака числа;

ceil, fix, floor, round – функции округления; rem – функция остатка;

gcd – наибольший общий делитель; lcm – наименьшее общее кратное;

Трансцендентные функции sqrt – квадратный корень;

exp – экспоненциальная функция;

log – функция натурального логарифма; pow2 – экспонента по основанию 2;

nextpow2 – ближайшая степень по основанию 2; log2, log10 – функции логарифмов.

Тригонометрические функции sin, sinh – функции синуса;

asin, asinh – функции обратного синуса; csc, csch – функции косеканса;

acsc, acsch – функции обратного косеканса; cos, cosh – функции косинуса;

acos, acosh – функции обратного косинуса; sec, sech – функции секанса;

asec, asech – функции обратного секанса; tan, tanh – функции тангенса;

atan, atan2, atanh – функции обратного тангенса; cot, coth – функции котангенса;

acot, acoth – функции обратного котангенса.

Для работы с комплексными функциями используются функции: real(z) – возвращает действительную часть комплексного числа; imag(z) – возвращает мнимую часть комплексного числа; abs(z) – возвращает модуль комплексного числа;

angle(z) – вычисляет фазу комплексного числа.

Для того чтобы получить справку по конкретной функции, нужно набрать команду help и имя функции. Для изменения порядка выполнения арифметических операторов следует использовать круглые скобки.

9

Массивы и операции с ними

Все данные в Matlab представляются в виде массивов. Массив – это упорядоченная, именованная совокупность однородных данных [1, 4]. Массивы различаются по числу размерностей или измерений: одномерные, двумерные, многомерные. Размером массива называют число элементов вдоль каждого из измерений. Доступ к элементам массива осуществляется через индексы. Нумерация элементов массивов в Matlab начинается с единицы.

Для создания одномерного массива можно использовать операцию конкатенации, которая обозначается с помощью квадратных скобок []. Элементы массива помещаются между скобками и отделяются друг от друга пробелом или запятой:

>> v=[1 2 3]; d=[1+2i,2+3i,37i];

Еще один способ создать одномерный массив – это сформировать последовательность чисел, имеющую определенный шаг. Формирование массива последовательности чисел с шагом производится с помощью записи формата

Начальное_значение: Шаг: Конечное_значение,

например

>> 1:5

или

>> a=0:2:10

При этом будут созданы массивы ans = [1 2 3 4 5] или a = [0 2 4 6 8 10] соответственно.

Задание матрицы требует указания нескольких строк. Для разграничения строк используется знак «;» (точка с запятой). Этот же знак в конце ввода предотвращает вывод матрицы или вектора (и вообще результата любой операции) на экран дисплея. Так, ввод:

>> M=[1 2 3; 4 5 6; 7 8 9];

задает квадратную матрицу

 

1

2

3

 

 

4

5

6

 

M =

.

 

7

8

9

 

 

 

Вывести созданную матрицу можно командой

>> M

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]