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

  • ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ

  • пример Лабораторная 1 (1). Лабораторная работа 1. Общие принципы работы системы matlab


    Скачать 40.3 Kb.
    НазваниеЛабораторная работа 1. Общие принципы работы системы matlab
    Дата01.10.2020
    Размер40.3 Kb.
    Формат файлаdocx
    Имя файлапример Лабораторная 1 (1).docx
    ТипЛабораторная работа
    #140484

    ЛАБОРАТОРНАЯ РАБОТА №1. ОБЩИЕ ПРИНЦИПЫ РАБОТЫ

    СИСТЕМЫ MATLAB

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

    Название системы MatLab происходит от словMatrix Laboratory (матричная лаборатория). Пакет ориентирован на обработку массивов данных.

    Матричная системаMatLab выделяется из других систем тем, что ее операторы и функции имеют операнды в виде векторов и матриц. Даже операнд в виде одного числа рассматривается как матрица размера1 ×1. Так как операции с матрицами могут быть как поэлементными, так и матричными, то в поэлементные операторы добавляется точка. Например, символы точка, звездочка‘*’ определяют поэлементное умножение массивов, символ звездочка ‘*’ – матричное умножение(табл. 1). Набор любой команды должен заканчиваться нажатием клавиши. Действие, выполняемое функцией, применяется ко всем элементам массива, передаваемым в списке входных аргументов.

    Справочная информация

    Получить справочную информацию можно следующими операторами:

    • helpwin– справка о разделах и функциях системыMatLab;

    • helpdesk– общая справка о системеMatLab;

    • doc <имя_функции> – вывод описания функции в окнеHelp∗;

    • help <имя_функции> – краткая информация о функции;

    • type <имя_функции> – вывод текстаm – файла функции;

    • demo– команда вызова тестовых примеров.

    Операторы и функции

    Полный список операторов системы выводится оператором: help ops

    В табл. 1 приведен список арифметических операторов с синтаксисом их применения.

    Таблица1.1 Список арифметических операторов

    Функция

    Название

    Оператор

    Синтаксис

    Plus

    Плюс

    +

    M1+M2

    uplus

    Унарный плюс

    +

    +M

    minus

    Минус



    M1–M2

    uminus

    Унарный минус



    –M

    mtimes

    Матричное умножение

    *

    M1*M2

    times

    Поэлементное умножение массивов

    .*

    M1.*M2

    mpower

    Возведение в степень матрицы

    ^

    M1^x

    power

    Поэлементное возведение в степень массива

    .^

    M1.^x

    mldivide

    Обратное(справа налево) деление матриц

    \

    M1\M2

    mrdivide

    Деление матриц слева направо

    /

    M1/M2

    ldivide

    Деление поэлементное массивов справа налево

    .\

    M1.\M2

    rdivide

    Деление поэлементное массивов слева направо

    ./

    M1./M2

    Для введения комментария используют знак процента– %.

    Системные переменные и константы

    В состав объектовMatLab входит ряд системных переменных и констант , значения которых устанавливаются системой при ее загрузке или автоматически формируются в процессе вычислений. Ниже перечислены некоторые из этих объектов:

    Ans – применяется для записи результата, если не используется оператор присваивания.

    pi – число π

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

    Рассмотрим некоторые способы формирования числовых массивов. При их создании можно использовать:

    − Квадратные скобки;

    − Специальную конструкциюj:i:k;

    − Конкатенацию(объединение);

    − Специальные матричные функции.

    Для создания вектор-строки используются квадратные скобки с перечислением элементов строки через пробел или запятую и специальная конструкция j:i:k с указанием начального значения вектора– j, шага– i и конечного значения вектора– k через двоеточие(если значение шага равно1, его можно не указывать).

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

    Для создания матрицы можно использовать следующие способы ввода элементов в квадратных скобках:

    1. По строкам, разделяющимся точкой с запятой;

    2. По столбцам, заданным в квадратных скобках;

    3. По строкам в интерактивном режиме.
    Задание1. Создать вектор-строку , вектор-столбец и матрицы:

    x = [1 2 3 4 5] % создание вектор-строки

    x = 1 2 3 4 5 % результат

    x = 1:10

    x = 1 2 3 4 5 6 7 8 9 10 % результат

    x = [1;2;3;4;5] % создание вектор-столбца

    x =

    1

    2

    3

    4

    5

    a = 9:2:18 % вектор-строка с начальным значением9, конечным– 18, с шагом 2

    a = 9 11 13 15 17

    a1 = a' % транспонирование вектор-строки а в вектор-столбец а1

    a1 =

    9

    11

    13

    15

    17

    x = [1 2 3; 4 5 6; 7 8 9]; % создание матрицы способом 1)

    x = [[1;4;7] [2;5;8] [3;6;9]]; % создание матрицы способом 2)

    x = [1 2 3 < Enter> % создание матрицы способом 3)

    4 5 6

    7 8 9];
    Задание2. Создать матрицу , используя вертикальную и горизонтальную конкатенацию:

    a= [1;2;3] % создание вектор-столбца из трех элементов

    a =

    1

    2

    3

    A = [a,a,a] % горизонтальная конкатенация из трех вектор-столбцов а

    A =

    1 1 1

    2 2 2

    3 3 3

    b = [1 4 8]; % создание вектор-строки из трех элементов

    >> B = [b;b;b] % вертикальная конкатенация из трех векторов-строк b

    B =

    1 4 8

    1 4 8

    1 4 8

    A1 = [0 0;0 1]; % создание матриц А1 и А2 размерностью2 ×2

    >> A2 = [5 6;1 8];

    >> A3 = [1 8 6 9]; % создание вектор-строки из четырех элементов

    >> H = [A1,A2;A3] % горизонтальная конкатенация и вертикальная

    % конкатенация

    H =

    0 0 5 6

    0 1 1 8

    1 8 6 9
    Специальные матричные функции

    Функция zeros создает матрицу , заполненную нулями(нулевую матрицу):

    zeros(m,n) – задание матрицыm ×n нулей;

    zeros(n) – задание квадратной матрицы изn ×n нулей.

    Функция ones создает матрицу , заполненную единицами(единичную матрицу):

    ones(m,n)– создание единичной матрицы размеромm ×n;

    ones(n) – задание квадратной матрицы изn ×n единиц.

    Функция randn создает матрицу , заполненную нормально-распределенными случайными числами.

    randn (m,n) – задание матрицыm ×n нормально-распределенных случайных чисел.

    randn (n) – задание квадратной матрицыn ×n.

    Функция rand создает матрицу , заполненную равномерно-распределенными случайными числами.

    rand (m,n) – задание матрицыm ×n равномерно-распределенных случайных чисел.

    Функция repmat() создает матрицу , копируя исходный массив заданное число раз по вертикали и горизонтали.

    B = repmat(A,M,N)– функция создает матрицу B, состоящую из M копий А по вертикали и N копий А по горизонтали, то есть M ×N копий массива A (если А– число, функция формирует матрицу размером M ×N со значением элементов, равных А).
    Задание3. Создать квадратную единичную матрицу размерностью2 ×2:

    ones(2)

    ans =

    1 1

    1 1

    Задание 4. Создать вектор-столбец с помощью вертикальной конкатенации с использованием функций rand и randn:

    x1 = [rand(2,1);randn(2,1)]

    x1 =

    0.8147

    0.9058

    -2.2588

    0.8622

    Задание 5. Создать матрицу с помощью горизонтальной конкатенации с использованием функций ones и zeros:

    x1 = [ones(2,1),zeros(2,1)]

    x1 =

    1 0

    1 0

    Задание 6. Сформировать матрицуc использованием вектор-строки а из трех элементов:

    a = [1 5 9];

    >> A = repmat(a,2,1)

    A =

    1 5 9

    1 5 9

    Задание 7. Сформировать матрицу размерностью2 ×3, все элементы которой равны десяти:

    repmat(10,2,3)

    ans =

    10 10 10

    10 10 10
    Индексация массивов

    Элементы массивов обладают двумя свойствами: порядковым номером (индексом) в массиве и собственно значением. Нумерация элементов в системе MatLab начинается с единицы. Для указания индексов элементов массивов используются круглые скобки(ошибка при индексации массива генерируется в том случае, если индекс элемента меньше единицы или больше размера массива).

    Задание 8. Задать вектор-строку из четырех элементов и изменить третий элемент на значение 8:

    a = [1 2 7 9];

    >> a(3) = 8

    a = 1 2 8 9

    Задание 9. Изменить значение элемента матрицы случайных чисел S,

    находящегося во второй строке и в четвертом столбце, на1:

    S = rand(4)

    S =

    0.6324 0.9575 0.9572 0.4218

    0.0975 0.9649 0.4854 0.9157

    0.2785 0.1576 0.8003 0.7922

    0.5469 0.9706 0.1419 0.9595

    >> S(2,4) = 1

    S =

    0.6324 0.9575 0.9572 0.4218

    0.0975 0.9649 0.4854 1.0000

    0.2785 0.1576 0.8003 0.7922

    0.5469 0.9706 0.1419 0.9595

    Для указания блока элементов массива используется символ двоеточие':'.

    Обнулить в матрице F целых чисел размерностью 4 ×4 элементы, находящиеся во второй и третьей строке и в первом и втором столбцах:

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

    >> F(2:3,1:2) = 0

    F =

    1 4 7 9

    0 0 8 3

    0 0 5 3

    7 6 9 2

    Задание 10. Обнулить третий и четвертый столбец из предыдущего примера:

    F(:,3:4) = 0

    F =

    1 4 0 0

    0 0 0 0

    0 0 0 0

    7 6 0 0

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

    A(m,:) = [ ] – удаляет строку m из матрицы A.

    A(:,n) = [ ] – удаляет столбец n из матрицы A.

    Сервисные функции

    [M,N] = size(<идентификатор_массива>)– возвращает размер массива, где M – число строк; N – число столбцов.

    Задание 11. Определить размерность единичной матрицы:

    s = ones(2,3);

    >> [M,N] = size(s)

    M = 2

    N = 3

    max(<идентификатор_массива>) и min(<идентификатор_массива>)–

    вычисляет вектор строку , содержащую максимальные или минимальные элементы в каждом столбце матрицы.

    Задание 12. Определить максимальные значения матрицы случайных чисел:

    v = rand(3)

    v =

    0.6557 0.9340 0.7431

    0.0357 0.6787 0.3922

    0.8491 0.7577 0.6555

    >> ma = max(v)

    ma = 0.8491 0.9340 0.7431

    Чтобы найти экстремальное значение в матрице, надо преобразовать ее в вектор. Для этого можно использовать функцию reshape (X,M,N), где X –

    преобразуемая матрица, M – размерность матрицы по вертикали(число строк) , N – размерность по горизонтали(число столбцов).

    Задание 13. Преобразовать матрицу из предыдущего примера в вектор-строку и найти экстремальные значения.

    [M,N] = size(v);

    >> k= reshape(v,1,M*N)

    k = 0.6557 0.0357 0.8491 0.9340 0.6787 0.7577 0.7431 0.3922 0.6555

    >> max(k)

    ans = 0.9340

    >> min(k)

    ans = 0.0357

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

    max(v(:))

    ans = 0.9340

    length(<идентификатор_массива>)– определение длины вектора; для матрицы это эквивалентно выполнению функций max(size(X)).

    Задание 14. Определить длину заданного вектора:

    c = [1 8 6 0 2 9 5];

    >> length(c)

    ans = 7

    Одиночная кавычка(') используется для создания строковой константы, например:

    >> a = 'Введите матрицу';

    Одиночная кавычка также используется для выполнения операции транспонирования

    2. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ

    Задание 1. Создать вектор-строку: начальный элемент равен –π, конечный π, шаг равен 0.1. Транспонировать строку в столбец.

    X=[-pi:0.1:pi];

    >> X1=X'

    X1 =

    -3.1416

    -3.0416

    -2.9416

    …………

    2.9584

    3.0584
    Задание 2. Создать три вектор-строки из 5 элементов fi=[xn,xn-1,xn-2,xn-3,xn-4] где n=5 для всех x=2,3,4. Объединить эти строки в матрицу А(3 × 5).

    x= [2 3 4];

    n=5;

    f1=[x(1)^n,x(1)^(n-1),x(1)^(n-2),x(1)^(n-3),x(1)^(n-4)]

    f1 = 32 16 8 4 2

    f2=[x(2)^n,x(2)^(n-1),x(2)^(n-2),x(2)^(n-3),x(2)^(n-4)]

    f2 = 243 81 27 9 3

    f3=[x(3)^n,x(3)^(n-1),x(3)^(n-2),x(3)^(n-3),x(3)^(n-4)]

    f3 = 1024 256 64 16 4

    A=[f1; f2; f3]

    A =

    32 16 8 4 2

    243 81 27 9 3

    1024 256 64 16 4
    Задание 3. Создать три вектор-столбца из 5 элементов арифметической прогрессии. Элемент арифметической прогрессии рассчитывается по формуле:

    An= an-1+d, где аn-1 – предыдущий элемент; аn – последующий.

    Пять элементов вектора формируются, начиная с задания первого элемента а и c использованием шага арифметической прогрессииd для задания последующих элементов:

    − Для первого вектор-столбцаa = 2; d = 1;

    − Для второго вектор-столбцаa = 7; d = 2;

    − Для третьего вектор-столбцаa = 10; d = –2.

    1. Объединить эти вектор-столбцы в матрицу В(5 × 3).

    2. Транспонировать матрицу В из предыдущего пункта задания и объединить с матрицей А в матрицу М(6 × 5).

    3. Из матрицыA убрать вторую строку .

    4. У матрицы В обнулить третью строку и убрать две последние строки.

    5. Создать матрицу Н(2 ×2) путем выделения первых двух строк и столбцов матрицы М из четвертого пункта задания.

    6. Создать с помощью функции repmat матрицу , состоящую из 2 × 3 матриц Н.

    7. Создать матрицы размерностью3 × 3: C – единиц; D – нулей; E – равномерно распределенных случайных чисел; F – нормально-распределенных случайных чисел.

    8. Найти минимальный элемент в матрице равномерно-распределенных чисел размерностью 3 ×5, используя функцию reshape.

    9. Создать символьные константы: а) Миру мир; б) Введите матрицу , ввести комментарий: Использование интерактивного ввода.

    >> a1(1)=2;

    >> d=1;

    >> i=1;

    >> for i=1:4

    a1(i+1)=a1(i)+d;

    end

    >> a1=a1'

    a1 =

    2

    3

    4

    5

    6

    >> a2(1)=7;

    >> d=2;

    >> i=1;

    >> for i=1:5

    a2(i+1)=a2(i)+d;

    end

    >> a2=a2'

    a2 =

    7

    9

    11

    13

    15

    >> a3(1)=10;

    >> d=-2;

    >> i=1;

    >> for i=1:4

    a3(i+1)=a3(i)+d;

    end

    a3=a3'

    a3 =

    10

    8

    6

    4

    2

    Задание 1.

    >> B= [a1 a2 a3]

    B =

    2 7 10

    3 9 8

    4 11 6

    5 13 4

    6 15 2

    Задание2

    B=B'

    B =

    2 3 4 5 6

    7 9 11 13 15

    10 8 6 4 2

    M=[B;A]

    M =

    2 3 4 5 6

    7 9 11 13 15

    10 8 6 4 2

    32 16 8 4 2

    243 81 27 9 3

    1024 256 64 16 4

    Задание 3

    A(2,:)=[]

    A =

    32 16 8 4 2

    1024 256 64 16 4

    Задание 4

    B(3,:)=0

    B =

    2 3 4 5 6

    7 9 11 13 15

    0 0 0 0 0

    > B(2:3,:)=[]

    B = 2 3 4 5 6

    Задание 5

    H=[M(1,1) M(1,2);M(2,1) M(2,2)]

    H =

    2 3

    7 9

    Задание 6

    repmat(H,2,3)

    ans =

    2 3 2 3 2 3

    7 9 7 9 7 9

    2 3 2 3 2 3

    7 9 7 9 7 9

    Задание 7

    C=ones(3)

    C =

    1 1 1

    1 1 1

    1 1 1

    D=zeros(3)

    D =

    0 0 0

    0 0 0

    0 0 0

    E=rand(3,3) %матрица равномерно-распределенных случайных чисел

    E =

    0.6948 0.0344 0.7655

    0.3171 0.4387 0.7952

    0.9502 0.3816 0.1869

    F=randn(3,3) % матрица нормально-распределенныхслучайных чисел

    F =

    -0.0301 1.0933 0.0774

    -0.1649 1.1093 -1.2141

    0.6277 -0.8637 -1.1135

    Задание 8

    Q=rand(3,5)

    Q =

    0.4984 0.5853 0.2551 0.8909 0.1386

    0.9597 0.2238 0.5060 0.9593 0.1493

    0.3404 0.7513 0.6991 0.5472 0.2575

    >> [m,n]=size(Q);

    >> p=reshape(Q,1,m*n);

    >> min=min(p)

    min = 0.1386

    Задание 9

    >> S='Миру мир'

    S =Миру мир

    >> S1='Введите матрицу' %Использование интерактивного ввода

    S1 =Введите матрицу

    Контрольные вопросы

    1. Как представляется информация в системе MatLab?

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

    1. Как можно создать векторы в системеMatLab?

    a = [1 2 3 4];      % вектор-строка

    Если требуется задать вектор-столбец, то это можно сделать так

    a = [1; 2; 3; 4];   % вектор-столбец

    или так

    b = [1 2 3 4]’;         % вектор-столбец

    Например, следующий фрагмент программы показывает, как можно создавать один вектор на основе другого:

    a = [1 2 3 4];      % начальный вектор a = [1 2 3 4]

    b = [a 5 6];        % второй вектор b = [1 2 3 4 5 6]

    a = [a 5];          % увеличение вектора а на один элемент

    a1 = zeros(1, 100);     % вектор-строка, 100 элементов с 
    % нулевыми значениями 
    a2 = zeros(100, 1);     % вектор-столбец, 100 элементов с 
    % нулевыми значениями 
    a3 = ones(1, 1000);     % вектор-строка, 1000 элементов с 
    % единичными значениями 
    a4 = ones(1000, 1);     % вектор-столбец, 1000 элементов с 
    % единичными значениями 
    a5 = rand(1000, 1);     % вектор-столбец, 1000 элементов со 
    % случайными значениями

    1. Какой вектор генерирует функция logspace?

    Функция logspace генерирует вектор равноотстоящих в логарифмическом масштабе точек. Она особенно эффективна при создании вектора частот.

    • logspace(a.b) – возвращает вектор-строку из 50 равноотстоящих в логарифмическом масштабе точек между декадами 10^0 и 10^b;

    • logspace(a.b.n) – возвращает n точек между декадами 10^a и 10^b;

    • logspace(a.pi) – возвращает точки в интервале между 10^a и n. Эта функция очень полезна в цифровой обработке сигналов.


    Все аргументы функции logspace должны быть скалярными величинами. Пример:

    >> L=logspaced.2.14)

    L =

    Columns 1 through 7

    10.000011.937814.251017.012520.309224.244628.9427

    Columns 8 through 14

    34.551141.246349.238858.780270.170483.7678100.0000

    1. Как можно создать матрицы в системе MatLab?

    Матрицы в MatLab задаются аналогично векторам с той лишь разницей, что указываются обе размерности. Приведем пример инициализации единичной матрицы размером 3х3:

    E = [1 0 0; 0 1 0; 0 01];         % единичная матрица 3х3

    или

    E = [1 0 0 

      0 1 0

     0 0 1];                 % единичная матрица 3х3

    Для доступа к элементам матрицы применяется такой же синтаксис как и для векторов, но с указанием строки и столбца где находится требуемый элемент:

    A = [1 2 3;4 5 6;7 8 9]; % матрица 3х3 

    disp(A(2,1));         % вывод на экран элемента, стоящего во 

    % второй строке первого столбца, т.е. 4 

    disp(A(1,2));         % вывод на экран элемента, стоящего в 

    % первой строке второго столбца, т.е. 2

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

    B1 = A(:,1);   % B1 = [1; 4; 7] – выделение первого столбца 

    B2 = A(2,:);   % B2 = [1 2 3] – выделение первой строки 

    B3 = A(1:2,2:3);    % B3 = [2 3; 5 6] – выделение первых двух % строк и 2-го и 3-го столбцов матрицы А.

    Размерность любой матрицы или вектора в MatLab можно определить с помощью функции size(), которая возвращает число строк и столбцов переменной, указанной в качестве аргумента:

    a = 5;              % переменная а 

    A = [1 2 3];        % вектор-строка 

    B = [1 2 3; 4 5 6]; % матрица 2х3 

    size(a)             % 1х1 

    size(A)             % 1х3 

    size(B)             % 2х3


    1. Какие вы знаете специальные функции для создания матриц?

    Можно использовать функции zeros(), ones() и rand(), например:

    A1 = zeros(10,10); % нулевая матрица 10х10 элементов

    или

    A2 = zeros(10); % нулевая матрица 10х10 элементов

    A3 = ones(5); % матрица 5х5, состоящая из единиц

    A4 = rand(100); % матрица 100х100, из случайных чисел


    1. Каким образом производится индексация массивов в системе MatLab, удаление, обнуление строк, столбцов?

    Элементы массивов обладают двумя свойствами: порядковым номером (индексом) в массиве и собственно значением. Нумерация элементов в системе MatLab начинается с единицы. Для указания индексов элементов массивов используются круглые скобки(ошибка при индексации массива генерируется в том случае, если индекс элемента меньше единицы или больше размера

    массива).
    >> F(:,3:4) = 0 //обнуляет 3 и 4 столбец

    F =

    1 4 0 0

    0 0 0 0

    0 0 0 0

    7 6 0 0

    Пустые квадратные скобки удаляют информацию из индексированной

    структуры.

    A(m,:) = [ ] – удаляет строку m из матрицы A.

    A(:,n) = [ ] – удаляет столбец n из матрицы A.


    1. Чем отличается определение почленных и матричных операций в системе MatLab?

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


    1. Как получить транспонированный массив?

    транспонирование матрицы производится при помощи апострофа'

    1. Как можно объединить матрицы?

    конкатенации —объединения малых матриц в большую.


    1. Как создаются строковые константы?

    Для задания строковых констант в MATLAB используются апострофы


    1. Какие системные переменные и константы есть в системе MatLab?

    • i или j — мнимая единица (корень квадратный из -1);

    • pi – число п - 3.1415926...;

    • eps — погрешность операций над числами с плавающей точкой (2-52);

    • realmin — наименьшее число с плавающей точкой (2-1022);

    • realmax — наибольшее число с плавающей точкой (21023);

    • inf — значение машинной бесконечности;

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

    • NaN — указание на нечисловой характер данных (Not-a-Number). 




    1. Как вводится комментарий?

    %

    1. Как можно определить размер массива?

    Reshape(m,n)


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