Главная страница
Навигация по странице:

  • Основы работы с матрицами и векторами Создание матриц и векторов

  • Поэлементные операции над матрицами

  • Преобразование типов данных в MATLAB

  • Основы построения графиков в MATLAB

  • Справочная система в MATLAB ( Help )

  • Задание на лабораторную работу №1 Задание №1

  • Задание №2 Используя операторы отношения, вычислить значения кусочно заданной функциипо 100 равномерно распределенным точкам, охватывающими все ее области определения

  • Задание №5*(дополнительное)

  • МATLAB_ЛР№1. Лабораторная работа 1 Работа в режиме командной строки в системе matlab


    Скачать 470.57 Kb.
    НазваниеЛабораторная работа 1 Работа в режиме командной строки в системе matlab
    Анкор МATLAB_ЛР№1.docx
    Дата14.09.2022
    Размер470.57 Kb.
    Формат файлаdocx
    Имя файлаМATLAB_ЛР№1.docx
    ТипЛабораторная работа
    #676183
    страница2 из 3
    1   2   3


    Логический тип данных (LOGICAL)
    Значения этого типа являются результатом вычислений условных и логических выражений и участвуют во всевозможных условных операторах языка. Логическое выражение может принимать одно из двух значений: «Истина» («true») или «Ложь» («false»). В MATLAB «Истина» ассоциируется с единицей, а «Ложь» – с нулем, хотя запись «true» и «false» также допустима.

    Значения логического типа получаются как результат операций отношения («==», «

    =»,«<», «>», «<=», «>=») и логических операций (конъюнкция, дизъюнкция, отрицание, сумма по модулю 2), список которых с примерами использования в MATLAB приведен в учебном пособии «Алгоритмизация и структурное программирование в MATLAB».

    В MATLAB существует ряд логических функций, начинающихся со слова «is» («быть», «являться» с англ.), с помощью которых переменные проверяются на различные условия. Например, функция isscalar(x) возвращает логическую 1, если переменная х является матрицей размером 1х1 (т.е. скаляром или символом), и логический 0 в противном случае.

    Следует отметить, что система MATLAB воспринимает как «Ложь» только 0 (типа double), а все остальные числовые или строковые значения воспринимаются как «Истина», однако результатом логических вычислений могут быть только «0» или «1».

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


    >> x=0:0.1:6; %создать вектор-строку х со значениями от 0 до 6 с шагом 0.6

    >> y=(x
    =pi).*(x-pi).^0.5;

    >>plot(x,y) % для визуализации результатов используется функция …

    построения двумерного графика plot()



    Рисунок 3. График кусочно заданной функции
    В данном примере задается вектор аргументов x со значениями от 0 до 6 с шагом 0,1. После этого вычисляется вектор значений функции y. Логическое выражение (x=pi) равно нулю, второе слагаемое также равно нулю и значимым является первое слагаемое.
    Символьный тип данных
    Символьный тип (char) – это тип данных, состоящих из одного символа (знака, буквы, кода). Значением типа char может быть любой символ из таблицы кодировки символов ASCII. Строки в MATLAB являются векторами, элементами которых являются символы, для них применимы многие матричные операции. Так, например, можно объединить строки с помощью символов«[,]»или «[;]». Система MATLAB позволяет создавать многострочные переменные символьного класса, являющиеся двумерными массивами символов.

    Для создания строки в MATLAB необходимо ее значение (текст) заключить в одинарные кавычки. Приведем пример создания строки:

    >>str = 'Hellow, world!'

    str =

    Hellow, world!
    Внутри одиночных кавычек можно помещать все доступные символы, например буквы, цифры, символы подчеркивания, двойные кавычки и др. Однако, так как строка сама ограничивается одинарными кавычками, то для того чтобы поместить в строку одинарную кавычку, необходимо поместить в нее две следующие подряд одинаковые кавычки.

    >>str = 'You''re right!'

    str =

    You're right!
    Система MATLAB обладает рядом функций для работы с символьными переменными и строками, например функции создания и проверки строк.

    1. Основы работы с матрицами и векторами

    Создание матриц и векторов

    Как отмечалось ранее, переменные в MATLAB представляют собой матрицы. Рассмотрим способы ввода матрицы с указания полного списка элементов. В MATLABматрицы задаются с помощью специальных символов («[ ]», «[ , ]», «[ ; ]», а так же с помощью стандартных функций (horzcat( ) – создает строку, vertcat( ) – создает столбец). При задании матриц необходимо следить за равенством длин строк, ее образующих. Для примера создадим числовую матрицу  :

    >> A = [1.2 2.4 3.1; 4.3 5.3 6.4]

    A =

    1.2000 2.4000 3.1000

    4.3000 5.3000 6.4000

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

    >> A = [1.2, 2.4, 3.1; 4.3, 5.3, 6.4]

    A =

    1.2000 2.4000 3.1000

    4.3000 5.3000 6.4000

    Матрицы в MATLABможно задавать не только с помощью вертикального объединения строк, как в предыдущем примере, но и при помощи горизонтального объединения столбцов:

    >> A = [[1.2;4.3] [2.4;5.3] [3.1;6.4]]

    A =

    1.2000 2.4000 3.1000

    4.3000 5.3000 6.4000

    При обращении к элементу матрицы в MATLAB после имени матрицы следует указать в круглых скобках два индекса, разделенных запятой. Первый индекс обозначает номер строки, а второй – номер столбца. Нумерация строк и столбцов начинается с единицы.

    >> A(2,3)

    ans =

    6.4000

    При обращении к строке (столбцу) матрицы необходимо указать номер строки в качестве первого (второго) индекса, а на месте второго (первого) индекса ввести символ двоеточие «:».

    >> A(2,:)

    ans =

    4.3000 5.3000 6.4000

    Также MATLAB позволяет создать специальные матрицы, для чего используются встроенные функции MATLAB.

    Векторы создаются аналогично матрицам:

    >> x = [1 2 3]

    x =

    1 2 3

    >> y = [1; 2; 3]

    y =

    1

    2

    3

    >> A=vertcat(2,5,8); B=horzcat(5,3,1);

    >>A

    A =

    2

    5

    8

    >> B

    B =

    5 3 1

    В данном случае xи B – это векторы-строки, а yи А - векторы-столбцы. Отличия вектора-столбца от вектора-строки проявляются при использовании матричных операций и использовании функций.

    Рассмотрим еще один важный способ задания вектора-строки – оператор двоеточия «:». Например:

    >> 1:10

    ans =

    1 2 3 4 5 6 7 8 9 10

    В данном случае был создан вектор-строка со значениями от 1 до 10 с шагом 1 (задается по умолчанию). При необходимости шаг можно указать явно:

    >> 1:2:10

    ans =

    1 3 5 7 9

    В данном случае значение 10 не содержится в векторе, так как оно задает лишь максимальное значение (или минимальное, при отрицательном шаге), которое будет содержаться в векторе.

    Шаг так же может быть отрицательным:

    >> 0 : -pi/4 : -2 * pi

    ans =

    0 -0.7854 -1.5708 -2.3562 -3.1416 -3.9270 -4.7124 -5.4978 -6.2832

    Поэлементные операции над матрицами

    Рассмотрим поэлементные операции над матрицами/векторами.

    Большинство функций MATLAB могут работать с матрицами и векторами. Рассмотрим в качестве примера функцию sin:

    >>x = 0 :pi/6 : pi

    x =

    0 0.5236 1.0472 1.5708 2.0944 2.6180 3.1416

    >>sin(x)

    ans =

    0 0.5000 0.8660 1.0000 0.8660 0.5000 0.0000

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

    Так же можно производить поэлементные операции сложения, вычитания, умножения, деления и возведения в степень для матриц/векторов одинаковой размерности. Например:

    >> x = [1 2 3];

    >> y = [3 2 1];

    >> x + y

    ans =

    4 4 4

    >> x - y

    ans =

    -2 0 2

    >>x .* y

    ans =

    3 4 3

    >>x ./ y

    ans =

    0.3333 1.0000 3.0000

    >>x .^ y

    ans =

    1 4 3

    Однако, при поэлементном умножении матриц разного размера, получим ошибку:

    >> x = [1 2 3];

    >> y = [3; 2; 1];

    >>x .* y

    Error using .*

    Matrixdimensionsmustagree.

    Отметим, что для поэлементного умножения, деления и возведения в степень необходимо перед операцией ставить точку: «.*», «./», «.^», иначе будут применяться матричные операции. При вычислении более сложных операций в MATLAB нужно помнить о приоритете этих операций (см. таблицу 3).


    1. Преобразование типов данных в MATLAB

    Как отмечалось ранее, основными типами данных в MATLAB являются числовые, логические и символьные. Зачастую, при написании программы необходимо преобразовать данные из одного типа в другой. Например, для того, чтобы подписать график функции текст подписи должен представлять собой строковую переменную. Данное из числовой переменной a с помощью функции num2str преобразуется в строку b.

    >> a=sin(pi/2)+2*cos(pi/4)

    a =

    2.4142

    >> b=num2str(a)

    b =

    2.4142

    >> c=(a>0)

    c =

    1

    В рабочей области было создано три переменные – а типа double, b типа char и с типа logical.



    Следует обратить внимание, что для обозначения каждого из перечисленных типов данных в рабочей области MATLAB существует свой значок (иконка): - тип double, - тип char, - тип logical.

    Так же удобно использовать функции преобразования типов данных для проверки типов переменных. В частности, при организации диалога с пользователем удобно использовать преобразование типов для оценки корректности ввода данных. По результату преобразования можно судить о том, содержит ли строка только цифры или так же и символы. Например, функция str2double(s)(см. таблицу 4 приложения) преобразует строку s в число (скаляр) типа double. Если строка s содержала символы, математические выражения или представляла собой вектор или матрицу, функция str2double(s) вернет Nan (Not-a-number). Следует так же отметить, что при преобразовании с помощью функции str2double символ запятая ',' опускается.

    >> a='23.2';

    >> str2double(a)

    ans =

    23.2000

    >> b='hello';

    >> str2double(b)

    ans =

    NaN

    >> c='12,4';

    >> str2double(c)

    ans =

    124

    Так же MATLAB обладает возможностями вычисления математических выражений, содержащихся в символьной переменной или строке. В частности, это реализуется с помощью функции eval().
    >> str='sin(pi/2)';

    >> eval(str)

    ans =

    1
    >> x = 0 : 0.5 : pi;

    >> str = '( sin( 2 * x ) + 1 ) .* ( x .^ 2 )';

    >> y=eval (str)

    y =

    0 0.4604 1.9093 2.5675 0.9728 0.2567 6.4853

    1. Основы построения графиков в MATLAB

    MATLAB обладает мощным инструментом визуализации результатов вычислений.

    Построим график функции вMATLAB. Для этого создадим вектор-строку xзначений переменной от 0 до с шагом 0,05.

    >>x = 0 : 0.05 : 6*pi;

    >>y = ( sin( 2 * x ) + 1 ) .* ( x .^ 2 );

    >>plot(x, y);

    >>xlabelx

    >>ylabely

    После ввода данных команд появится график представленных на рисунке 4.




    Рисунок 4. График в MATLAB


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

    Для того, чтобы подписать оси графиков, используется команды xlabel и ylabel, за которыми через пробел следует название оси графика.

    1. Справочная система в MATLAB (Help)

    Подробную информацию об объектах и функциях MATLAB можно получить, используя справочную систему. Для вывода справки в консоль используют команду help. Для вывода справки по конкретному объекту используют help<имя объекта>. При этом в консоль выводится краткая справка по объекту, приводятся гиперссылки на близкие по значению или назначению объекты, а так же наCHTML-страницу с расширенной справкой по объекту. В расширенной справке так же приводятся примеры использования рассматриваемого объекта.

    Например, для получения справки о функции sin, введем в командной строке «helpsin»:

    >> help sin

    sin Sine of argument in radians.

    sin(X) is the sine of the elements of X.

    See also asin, sind.

    Overloaded methods:

    codistributed/sin

    gpuArray/sin

    sym/sin

    Reference page in Help browser

    doc sin

    Так же в MATLAB существует справка по ключевому слову, реализуемая командой «lookfor<Ключевое слово>».

    1. Задание на лабораторную работу №1

    Задание №1

    1. Выбрать функцию для вычисления в соответствии с номером варианта (таблица 4);

    2. Задать точкуx1согласно номеру варианта;

    3. Вычислить значение функции в точкеx1 и присвоить результат переменнойy1;

    4. С использованием оператора двоеточия сформировать вектор x со значениями от xMin до xMax с шагом dx;

    5. Для каждого элемента вектора x вычислить cпомощью значение функции, заданной по варианту, и записать результат в переменную y;

    6. Используя созданные вектора, построить график функции и подписать оси.


    Задание №2

    Используя операторы отношения, вычислить значения кусочно заданной функциипо 100 равномерно распределенным точкам, охватывающими все ее области определения (3 отрезка) согласно номеру варианта (таблица 5), рассчитанные значения присвоить переменной y2 и нарисовать график функции.
    Задание №3

      1. Создать строковые переменные:str1, в которую записать свою фамилию, переменную str2, в которую записать свое имя и переменную str3, в которую записать свое отчество;

      2. С помощью объединения строк создать переменные str4 и ,str5, содержащее ФИО, записанные в одну строку, и ФИО, записанные в три строкисоответственно;

    3. Найти, в каких позициях ФИО содержится буква «а»;

    4. Определить, содержится ли в ФИО буква «ю»;

    1. В переменной str4 поменять все строчные буквы напрописные;

    2. В переменной str5 поменять все заглавные буквы на строчные.


    Задание №4

    1. Создать строковые переменные, содержащие данные согласно номеру варианта (таблица 6)

    2. Преобразовать строковые переменные в числовые с помощью функции str2double. Объяснить полученные результаты.

    3. Преобразовать строковые переменные в числовые с помощью функции str2num. Объяснить полученные результаты.

    4. Применить к строковым переменным функцию eval. Объяснить полученные результаты.


    Задание №5*(дополнительное)

    Четырьмя способами сформировать матрицу, содержащую 2 строки и 3 столбца, элементами которой являются первые 6 значений вектора y2 значений функции (задание 2). Названия матриц должны соответствовать Аi, где i=1..4. (Задание матриц с использованием « , » и « » для элементов в одной строке считается 1 способом).С помощью логических функций проверить матрицы на равенство, матрицуА3 возвести в квадрат, поэлементно умножить матрицы А1 и А2.
    Таблица 4. Варианты задания №1

    Номер варианта

    ЗАДАНИЕ №1

    Функция для задания №1

    x1

    xMin

    dx

    xMax

    I

    II

    III

    IV

    V

    VI

    1











    2











    3











    4











    5











    6











    7











    8











    9











    10











    11











    12











    13











    14











    15











    16











    17











    18











    19











    20











    21











    22











    23











    24











    25











    26











    27










    1   2   3


    написать администратору сайта