Заполнение вручную через цикл. Чтение из файла. Построение графиков
Заполнение вручную через цикл Заполнение двумерного массива 5 на 3 (5 строк по 3 столбца) через цикл for: for i=1: 5 for j=1: 3 array1(i, j) = i*3+j; end end
Удаление строки из массива: array6(1,: ) = []; Удалится вся первая строка массива. После этого размерность массива по строкам уменьшится на единицу. Аналогично array6(:, 2) = []; удалит второй столбец.
Транспонирование массива - нужно добавить символ ' (апостроф): array_transposed = array6';
Математические операции с массивами: математические операции с массивом и числом происходят как и обычно, умножение и деление массива на массив происходит по правилам матричной алгебры. Для поэлементного умножения \ деления двух массивов одинаковой размерности необходимо перед математическим оператором поставить символ. (точка): array1 = [1, 2, 3; 1, 2, 3]; array2 = [2, 2, 2; 3, 3, 3]; array3 = array1. *array2 Результат: array3 = 2 4 6 3 6 9 Чтение из файла
Ежели файл с исходными данными записан в формате xls (Эксель): [num_data text_data raw_data] = xlsread('file_name. xls'); Читаемый файл должен находиться в рабочей папке, в противном случае нужно указывать путь до файла. Здесь num_data - массив, в который положатся все числовые данные, тип данных - интежер или флоат, как повезёт; text_data - массив, в котором будут все текстовые данные, формата чар; и raw_data - массив всех элементов исходного файла смешанного формата (cell).
Ежели файл с исходными данными записан в другом формате (. txt, . dat, др. ), то пользуются невероятной функцией textscan(): fileID = fopen(filename, 'r'); % открыть файл data_raw = textscan(fileID, '%f %f'); % считать данные data_cell = cell2mat(data_raw); % Приведение cell к массиву data_mat = data_cell(:,: ); % Приведение cell к массиву fclose(fileID); % закрыть файл Здесь %f %f в функции textscan означает, что файл содержит два столбца с числами с плавающей точкой (float). Ежели там целочисленные значения - каждый столбец будет обозначаться %i (integer) или %d (decimal) Ежели там буковки - %s (string, строка символов), %c (char, один символ).
fopen() - функция открытия файла, первый аргумент - название открываемого файла, второй аргумент - режим открытия. 'r' - только для чтения, 'w' - для записи.
Для записи файлов можно использовать функцию fprintf(), с синтаксисом, похожим на textscan(). Точно так же нужно открывать файл (в режиме записи), по окончании закрывать. Например: fileID = fopen(filename, 'w'); % открыть файл fprintf(fileID, '%s', 'pew-pew'); % записать одну строковую перем. fclose(fileID); % закрыть файл
Уточнение по поводу функции fprintf(). Первый аргумент - дескриптор файла, второй аргумент - формат записываемых данных - это одна строка ( '%s' из примера выше), по шаблону которой будут записываться все столбцы, может содержать как обычный текст (будет повторяться в каждой строке), так и символы для подстановки (начинаются с %). Третий аргумент - массив, из которого производится подстановка по формату строки. Для того, чтобы форматирование в записанном файле было корректным, строка формата должна оканчиваться символом конца строки - '\n', т. е. пример выше будет выглядеть как '%s\n'.
Ежели записывается большой файл с большим количеством столбцов, удобно записывать формат с помощью функции repmat(). Эта функция копирует элемент нужное количество раз; принимает 3 аргумента: 1 аргумент - что именно копировать (число, строка, вектор, столбец), 2 аргумент - число строк повторений, 3 аргумент - число стобцов повторений. Например: repmat('%d ', 1, 5 ) создаст следующую строку: '%d %d %d %d %d ', которая повторяется на 1 строку (2 аргумент) и на 5 столбцов (3 аргумент).
Для добавления символа завершения строки можно использовать функцию strcat() - это функция, объединяющая несколько строк в одну (str от string - строка, cat от concatenation - объединение). Тогда, если имеется массив array1 размерностью NxM, записать его в файл можно так:
[N M] = size(array1); fileID = fopen(filename, 'w'); % открыть файл frpintf(fileID, strcat(repmat('%d ', 1, M), '\n'), array1); fclose(fileID); % закрыть файл
Если что-то идёт не так - возможно array1 нужно транспонировать.
Построение графиков
Для построения двумерных графиков существует функция plot(Х, У). Где X — вектор значений по оси Х, У — по У. Размерности этих двух векторов должны совпадать.
Пример: Х = 10: 20; % создать вектор от 10 до 20 с шагом в 1 У = 30: 2: 50; % создать вектор от 30 до 50 с шагом в 2 plot(X, Y); Выведет просто наклонную прямую линию.
Функция plot() имеет возможность принимать дополнительные аргументы для оформления графика. Для изменения цвета необходимо добавить букву: r, k, c, m, y или b. Для изменения символа точек — добавить символ x, o, -, ^ или *. Эти аргументы необходимо вставлять в одинарных кавычках после осей. Например: plot(X, Y, 'oy'); выведет график с линией жёлтого (y, yellow) цвета, где точки будут обозначаться кружочками (o).
Для изменения толщины линии необходим аргумент 'linewidth', затем толщина в пикселях, без кавычек. Например: plot(X, Y, 'linewidth', 2); выведет график с толстой линией (2 пикселя).
Точное изменение цвета — необходим аргумент 'rgb', затем [1. 0 1. 0 1. 0] — где первая цифра означает интенсивность красного цвета (от нуля — минимум, до 1. 0 - максимум), вторая — интенсивность зелёного цвета, третья — синего конечно. Например, plot(X, Y, 'rgb', [1. 0, 0. 5, 0. 0]); выведет график оранжевого цвета.
Полный список: http: //www. mathworks. com/help/matlab/ref/linespec. html? requestedDomain=www. mathworks. com
По умолчанию каждое новое построение графика очищает окно с графиками, которое открыто до него, поэтому ежели необходимо наложить несколько графиков - после первого построения нужно написать следующее: hold on;
Например, plot(X1, Y1, 'r'); % построение 1го графика, красным цветом hold on; % включение наложения графиков plot(X2, Y2, 'g'); % построение 2го графика синим цветом, наложится на предыдущий график plot(X3, Y3, 'y'); % построение 3-го графика, жёлтым цветом, также наложится, потому что наложение уже включено Наложенные графики могут выглядеть так:
Для построения одновременно нескольких графиков в разных окнах необходимо перед каждым построением писать следующую строку: figure;
Например, следующий код создаст два окна со своими графиками figure; % новое окно plot(X1, Y1, 'r'); % построение графика figure; % новое окно plot(X2, Y2, 'g'); % построение графика в новом окне
Для того, чтобы создать одно окно с раздельными графиками необходимо использовать функцию subplot(), которая имеет три аргумента: число графиков в окне по вертикали, число графиков в окне по горизонтали, номер текущего графика. Например, для двух графиков один над другим испольбзуется следующий код: subplot(2, 1, 1); % два графика в столбик, один ряд, первый график plot(X1, Y1, 'r'); % малюванне subplot(2, 1, 2); % два графика в столбик, один ряд, второй график plot(X2, Y2, 'g'); % малюванне
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|