3 Лекція МАТЛАБ (матриці, рядки, файли)

МАТЛАБ. МАТРИЦІ, СТРОКИ, ФАЙЛИ.

В Command Window можна здійснювати всі основні операції з матрицями (масивами, як їх називають в програмуванні). Матриця вводиться так: А = [1 5 46; 6 7 34; 78 12 5]; де А ім'я матриці вбрання програмістом на свій розсуд, рядки матриці відокремлені один від одного крапкою з комою. Наприклад, матриця з одного стовпця (вектор, як її називають в програмуванні) вводиться в Command Window так: В = [2; 6; 7; 89; -4]; тобто її елементи, кожен з яких розташований в наступному рядку, відокремлені один від одного крапкою з комою. Для операцій з матрицями передбачені спеціальні команди, які будуть детально описані пізніше.

Дії з матрицями в М-файлах.

В М-файлах введення масиву слід організовувати поелементно, використовуючи для цього наступні команди: A (i, j) = input (strcat ( 'А (', int2str (i), ',', int2str (j), ') =' )); де А ім'я масиву, i, j цілі числа (змінні цілочисельного типу) використовуються як лічильники циклів, input команда введення змінної з попередніми висновком звернення до користувача. Звернення до користувача зазвичай вказується в дужках команди input. В даному випадку в дужках знаходиться команда strcat яка призначена для формування рядка символів (тексту). В її дужках зазвичай вказують кілька фрагментів тексту і імена змінних, коли потрібно сформувати єдиний текст з цих фрагментів і чисел (значень числових змінних). Для того щоб значення числових змінних перетворити в рядок цифр, використовуються команди int2str для цілих чисел і num2str для будь-яких чисел. Для операцій з матрицями передбачені спеціальні команди, які будуть детально описані пізніше.

3 Лекція МАТЛАБ (матриці, рядки, файли)

Текстовими файлами називаються файли з символів (тексту). Вони складаються з рядків, що закінчуються символом «кінець рядка». В кінці файлу стоїть символ «кінець файлу». Файл має розширення .txt.

Двійкові файли містять інформацію у вигляді послідовностей двійкових символів заданої довжини. Мають розширення .dat.

Для відкриття текстового файлу використовується команда f = fopen ( 'exTextFile_1.txt', 'wt'); де f ім'я змінної яка буде зображувати відкритий файл в тексті програми. exTextFile_1.txt це ім'я файлу з розширенням .txt який буде відкритий. Якщо він не існував раніше то він буде створений (без будь-якого міститься в ньому тексту). wt означає що файл новостворюваний, текстовий, порожній і відкритий тільки для запису.

3 Лекція МАТЛАБ (матриці, рядки, файли)

Команда fprintf (f, 'first matrix \ n'); означає що в згаданий файл f буде поміщена (записана) рядок зазначена в лапках. Її завершує символ кінця рядка \ n.

3 Лекція МАТЛАБ (матриці, рядки, файли)

Команда fprintf (f, '% f \ t', A (i, j)); записує в файл черговий елемент масиву A (i, j). Зазначене в лапках% f означає що елемент масиву буде записаний як число зі знаком, з шістьма знаками після коми (а якби було. То було б ціле число зі знаком;% з символ;% s рядок символів;% g число зі знаком і зазначенням порядку). Зазначене там же \ t означає що перед елементом масиву буде вставлена ​​табуляція (тобто перед ним буде широкий пробіл).

Команда fprintf (f, '\ n'); означає що буде вставлений символ кінця рядка і відбудеться перехід на наступний рядок.

Команда fclose (f); закриває файл f. Вона необхідна. Кожен використаний (відкритий) файл необхідно закрити (закінчити роботу з ним).

Для того щоб вважати вміст створеного нами текстового файлу, напишемо М-файл.

3 Лекція МАТЛАБ (матриці, рядки, файли)

Команда f = fopen ( 'exTextFile_1.txt', 'rt'); означає що файл відкритий для читання.

Команда s1 = fscanf (f, '% s', 2); означає що зчитується в змінну s1 рядок (так як вказано% s) з двох слів (словом вважається все що перед пропуском або знаком пунктуації або знаком кінця рядка). При цьому пробіл не зчитується.

Команда A (i,:) = fscanf (f, '% f', 3); означає що в матрицю А в її i-й рядок, у всю довжину рядка копіюються з файлу числа зі знаком і з шістьма знаками після коми, три числа.

Функції для запису матриць в файл і читання матриць з файлу.

Функціяdlmreadсчітивает числові дані з текстового файлу в матрицю.

3 Лекція МАТЛАБ (матриці, рядки, файли)
3 Лекція МАТЛАБ (матриці, рядки, файли)

Функціяdlmwriteзапісивает матрицю в текстовий файл.

3 Лекція МАТЛАБ (матриці, рядки, файли)
3 Лекція МАТЛАБ (матриці, рядки, файли)

Команда dlmwrite ( 'dlm1.txt', A) записує матрицю А в файл і ставить коми після елементів матриці. Команда type ( 'dlm1.txt') показує вміст текстового файлу у вікні Command Window.

Команда dlmwrite ( 'dlm2.txt', A, '#') не тільки записує матрицю А в файл, а й додає між елементами матриці роздільник. Роздільник можна вказати майже будь-хто.

3 Лекція МАТЛАБ (матриці, рядки, файли)
3 Лекція МАТЛАБ (матриці, рядки, файли)

Команда dlmwrite ( 'dlm3.txt', A, '#', 2,2) записує не всю матрицю, а починаючи з зазначеного рядка і стовпця. На місці пропущених елементів (рядків і стовпців) залишаються роздільники.

3 Лекція МАТЛАБ (матриці, рядки, файли)
3 Лекція МАТЛАБ (матриці, рядки, файли)

Команда A = dlmread ( 'dlm2.txt', '#', 1,1) зчитує матрицю із зазначеного текстового файлу, начина з другого рядка і другого шпальти (зазначені номери рядка і стовпця 1, 1 насправді означають 2 рядок і 2 стовпець, так як нумерація в цій команді йде з нуля). При цьому команда попереджена про наявність між зчитуваними елементами роздільник # і не може через його наявності.

3 Лекція МАТЛАБ (матриці, рядки, файли)
3 Лекція МАТЛАБ (матриці, рядки, файли)
3 Лекція МАТЛАБ (матриці, рядки, файли)

Команда A = dlmread ( 'exTextFile_3.txt') зчитує матрицю квадратну, і якщо до квадратної не вистачає, то додає рядки або стовпці з нулів.

Команда A = dlmread ( 'dlm1.txt', ',') зчитує, знаючи про наявність роздільник між елементами матриці.

Команда A = dlmread ( 'dlm1.txt', ',', [0 0 1 1]) зчитує, знаючи про роздільник, елементи починаючи з 0-го рядка і 0-го стовпця і до 1-го рядка і 1-го стовпчика при нумерації з нуля.

При відкритті функцією fopen вказується режим: wb (аналогічно wt для текстових) і rb (замість rt для текстових).

Читання з виконуваного файлу виконується [A n] = fread (f, n, type); де А матриця, n кількість реально лічених в неї елементів. У правій частині виразу, f ідентифікатор файлу, n кількість зчитувальних (якщо вдасться стільки вважати) елементів, type вказує скільки байт в кожному, що зчитує. Якщо параметр type (див. Таблицю) не вказано то за замовчуванням програма буде вважати що вибрано значення uchar. Якщо прпущено кількість n зчитувальних елементів, то буде зчитувати до кінця файлу.

Поточна позиція покажчика (скільки байт від початку файлу) повертається функцією ftell (f) де f ідентифікатор файлу. Повернути покажчик в початок файлу можна функцією frewind (f). Решта переміщення покажчика за допомогою функції fseek (f, n, origin) де n переміщення (в байтах) щодо позиції origin (три варіанти: 'bof' або -1 початок файлу, 'eof' або 1 кінець файлу, 'cof' або 0 поточна позиція. Щодо поточної позиції вперед n> 0, тому n<0. В остальных случаях n>0.)

3 Лекція МАТЛАБ (матриці, рядки, файли)
3 Лекція МАТЛАБ (матриці, рядки, файли)
3 Лекція МАТЛАБ (матриці, рядки, файли)

Запис в двійковий файл здійснюється функцією n = fwrite (f, A, type) де f ідентифікатор файлу, A матриця яку записуємо, type тип записуваних значень, n звіт про кількість реально записаних значень.

Читання з виконуваного файлу, якщо заздалегідь не відомо кількість елементів в ньому.

3 Лекція МАТЛАБ (матриці, рядки, файли)
3 Лекція МАТЛАБ (матриці, рядки, файли)

Нехай нам про фото exFwrite1_1.dat вже відомо, що він складається з 32-розрядних значень. Тоді команда fseek (f, 0,1); означає переклад покажчика в кінець файлу і після цього команда n = ftell (f) / 4 отримує поточне положення вказівника в байтах від початку файлу (фактично, довжину файлу) і потім ділить його на 4, так як файл складається з 32-розрядних (по 4 байта) елементів, отримуючи кількість елементів у файлі. Перше з них ціле, інші масив дійсних чисел (див. Вище по тексту як заповнювався цей файл).

Аналогічним чином можна вважати дані з будь-якого виконуваного файлу, володіючи мінімальної необхідною інформацією про характер того, що там знаходиться (розрядність, типи елементів).

Схожі статті