Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Заполнение вручную через цикл. Чтение из файла. Построение графиков




Заполнение вручную через цикл

Заполнение двумерного массива 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...