Відмінності між версіями «MATLAB та його інтеграція в інші програмні додатки, ООП в MATLAB»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
Рядок 39: Рядок 39:
 
Після виконання команди notebook в командному вікні MATLAB відкриється новий документ MS Word в який буде інтегрована нова вкладка меню, та можливість створення m-файлів в меню Файл
 
Після виконання команди notebook в командному вікні MATLAB відкриється новий документ MS Word в який буде інтегрована нова вкладка меню, та можливість створення m-файлів в меню Файл
  
==== Алгоритм створення M-book ====
+
=== Алгоритм створення M-book ===
 
<ul>
 
<ul>
 
<li>команда notebook в командному вікні MATLAB;</li>
 
<li>команда notebook в командному вікні MATLAB;</li>

Версія за 12:15, 13 травня 2012

Matlab & MS Word

Основою MATLAB є рішення математичних задач з простим інтерфейсом та досить малими можливостями стилізації текстів. В рамках останнього немалі переваги мають текстові процесори класа Word, які дозволяють в рамках одного документу створювати опис з любим стилем, кольором та розміром символів, добавляти до цього опису малюнки, математичні формули та графіки функцій. Але ці об’єкти не можуть взаємодіяти при зміні даних, що описують дану задачу.

Notebook (Блокнот) – це спеціальний пакет системи MATLAB, що дозволяє готовити за допомогою текстового процесора (редактора) Microsoft Word електронні документи (книги) з повноцінним текстовим описом, з різноманітним стильовим оформленням і “живими” прикладами.

Notebook забезпечує об`єднання можливостей текстових процесорів класа Word з можливостями MATLAB шляхом вставки в будь-які тексти документів, створюваних цими редакторами, діючих комірок вводу та виводу. При цьому зміна вхідних даних в комірках вводу веде до зміни результатів обчислень в пов’язаних з ними комірках виводу. Це і забезпечує “оживлення” окремих прикладів та електронних книг на базі додатка Notebook. В комірках виводу може відображуватися будь-яка інформація – числа, вектори, матриці, малюнки тощо. Але слід зауважити, що використання своїх .m-файлів та вставка повноцінної анімації MATLAB без використання пакету Simulink неможливо, цю проблему ми не будемо досліджувати.

Також потрібно відмітити, що MATLAB не дозволяє готувати документи, в яких містяться малюнки, графіки – вони створюються в окремих вікнах. Не можливо в MATLAB відображати і математичні формули в їх звичайному вигляді. Це створює труднощі при читанні документу. Документи, які готує Notebook, можуть містити всі ці елементи і мати вигляд листа книги.

В основі Notebook лежить механізм динамічного зв’язку (DDE – Dynamic Data Exchange) між різними додатками в операційній системі Windows. При цьому можлива передача змінених даних з одного додатку в інший і навпаки. Додатки (що передають дані) називаються сервером, а ті що приймають дані – клієнтами. В системі “Word – MATLAB”, що реалізована в Notebook, вони обидва можуть виконувати роль сервера та клієнта.

Установка Notebook

Створення документів на базі Notebook в MATLAB вирішено досить оригінально. По-перше, в процесі нього в явній формі відсутній процес створення об’єкта зв’язку між додатками за допомогою команди Insert Object (Вставка об’єкта). Такий зв'язок створюється автоматично – потрібно лише загрузити файл з іменем readme.doc з папки PC в папке NOTEBOOK системи MATLAB [1, c. 83]. Коли Word видасть повідомлення про те, що текст цього документа містить макроси, потрібно підтвердити їх загрузку – в противному випадку додаток Notebook працювати не буде.

Можливо також дати команду notebook з командного вікна MATLAB – при цьому відбудеться запуск текстового редактора Word тої версії, що встановлена на даному ПК. Але для першого запуску потрібно виконати встановлення зв’язку MATLAB з Word, виконавши команду:

  >> notebook -setup
  Welcome to the utility for setting up the MATLAB Notebook
  for interfacing MATLAB to Microsoft Word
  Choose your version of Microsoft Word:
  Microsoft Word 97
  Microsoft Word 2000
  Microsoft Word 2002 (XP)
  Exit, making no changes

Тепер потрібно вказати версію Word у вигляді номера:

  Microsoft Word Version: 3

Діалог добре завершиться виводом повідомлення:

  Notebook setup is complete.

Для нових версій пакета MATLAB можливий інший вибір текстових процесорів.

Початки роботи з Notebook

Після виконання команди notebook в командному вікні MATLAB відкриється новий документ MS Word в який буде інтегрована нова вкладка меню, та можливість створення m-файлів в меню Файл

Алгоритм створення M-book

  • команда notebook в командному вікні MATLAB;
  • у створеному автоматично вікні Word набираємо команди, які нам необхідні для виконання, набираємо за всіма правилами набору MATLAB;
  • Виділяємо необхідні строки і натискаємо комбінацію клавіш Alt+D, або у меню Notebook натискаємо команду Define Input Cell, в результаті наш текст буде виділений і поміщений в щось схоже на комірку;
  • Запускаємо нашу комірку на виконання комбінацією клавіш Ctrl + Enter або у меню Notebook команду Evaluate Cell;
  • Отримаємо результат, який поміститься відповідно під нашею коміркою;

Matlab: робота з файлами

При обробці даних часто виникає необхідність зберігання як вхідних так і вихідних даних. Для цього зазвичай використовують файли. Файли – це досить широко використовувані об’єкти MATLAB. Робота з файлами в MATLAB досить схожа на роботу з файлами в мові програмування високого ріня С++. Покажемо коротко аналогії та відмінності.

Відкриття та закриття файлів

Файл звичайно є деякою сукупністю даних, об’єднаних одним іменем. Тип файлу, як правило, визначається його розширенням. Будемо розглядати файл як одне ціле, без врахування особливостей операційних систем (напр.. для Windows – фрагментація).
Перед використанням будь-якого файлу він повинен бути відкритий, а по закінченню – закритий. Багато файлів може бути відкрито та доступно для читання одночасно. Розглянемо команди відкриття та закриття файлів.

Розглянемо відмінність у відкритті файлів та методом пошуку файлів за іменем в середовищі MATLAB від С++.

Команда open mane, де mane повинно містити масив символів або символьну змінну, відкриття здійснюється залежно від аналізу параметра mane та розширення в імені.

Якщо файл з розширенням існує в каталозі MATLAB, то відкривається той файл, який повертається командою which name, якщо нема – то файл із файлової системи. Якщо файл не має розширення імені, то він відкривається тою програмою, формат файлів якої був би знайдений функцією which (‘name_file’). По замовчуванню для всіх файлів крім MATLAB-файлів, визивається openother. Open визиває функції openxxx, де xxx – розширення файлу. Виключення – змінні робочої області, для яких викликається openvar, та малюнки для яких викликається openim.

Двійкові файли

Двійковими або бінарними файлами називають файли, дані яких представляють собою машинні коди. Основні операції с такими кодами аналогічні С++, коротко їх розглянемо:

  1. Відкриття файлів “індеф_ф”=fopen(‘ім`я_ф’,’флаг’) – “індеф_ф” - ідентифікатор, на відміну від С++ не оголошується; цією функцією відкривається файл з іменем ‘ім`я_ф’, та флагом:
    • r’ – відкриває файл для читання;
    • ‘r+’ – відкриває файл для читання та запису;
    • ‘w’ – видалення вмісту існуючого файлу або створення нового та відкриття його для запису;
    • ‘a’ – створення та відкриття нового файлу або відкриття існуючого для запису з добавленням в кінець файлу;
  2. Закриття файлу fclose(‘індеф_ф’);
  3. [A, count]=fread(fid,size,precision) – считує двійкові дані з заданого файлу fid та поміщає їх в матрицю А. Вихідний аргумент count містить число правильно зчитаних (удачно) елементів, sizе – аргумент який визначає кількість зчитуваних даних, якщо він не визначений, зчитування іде до кінця файлу.
  4. count=fwrite(fid,A,precision) – записує елементи матриці А в файл з заданою точністю. Дані записуються в файл по стовпцям, вихідний елемент містить число правильно записаних елементів. Добавляє символ «возврат каретки» перед початком нового рядка.

Форматовані файли (текстові)

Файли, які містять форматовані дані, називаються форматованими файлами або текстовими. Всі функції використовувані для роботи з цими файлами аналогічні функціям для текстових файлів в С++.

  1. line=fgetl(fid) – повертає рядок з файлу з ідентифікатором fid з видаленням символу кінця рядку. Якщо функція знаходить кінець файлу, то вона повертає значення -1;
  2. line=fgets(fid) – повертає рядок з файлу з ідентифікатором fid, не видаляючи символ кінця рядка;
  3. line=fgets(fid,nchar) – повертає не більше nchar перших символів рядка. Після признака кінця рядка чи файла символи більше не зчитуються;
  4. count=fprintf(fid,format,A,…) – форматує дані, що містяться в дійсній частині матриці А, під контролем рядка format та записує їх в файл з ідентифікатором fid. Повертає число записаних байтів.
  5. A=fscanf(fid,format) – читає всі дані з файла з ідентифікатором fid, перетворює їх згідно значення параметра format і повертає у вигляді матриці А
  6. [A,count]=fscanf(fid,format,size) – зчитує кількість даних, визначених параметром size, перетворює їх згідно з параметром format і повертає разом з кількістю успішно зчитаних елементів count. Параметр size – це деякий аргумент, визначаючий кількість зчитаних даних.

Функції fscanf та fprintf ведуть себе аналогічно до подібних функцій в мовах програмування С/С++, має аналогічні специфікатори форматів даних, та спеціальні символи в рядках форматів, тому ми не будемо на цьому докладно зупинятися.

MatLab & MS Excel

Excel Link дозволяє інтегрувати Excel та MatLab. Дані, які зберігаються в вигляді таблиці на листу Excel, можна перенести в MatLab в вигляді матриці, або навпаки. При цьому переносяться не формули, а тільки значення.

Установка Excel Link

Завантажити Excel. Натиснути кнопку Сервис – Надстройки – Обзор – «Каталог до MatLab»\toolbox\exlink\excllink.xla.

З’явиться надбудова – putmatrix – getmatrix – evalstring та вікно MatLab Command Window.

Користування Excel Link

Putmatrix – записує виділену таблицю в MatLab (зявится запит, якій змінній потрібно присвоїти таблицю в вигляді матриці);

Getmatrix – записує зміст матриці в Excel;

Evalstring – виконує команду MatLab’a.

Якщо не потрібно, щоб MatLab завантажувався автоматично з Excel, наберіть в будь-якій комірці Excel команду:=MLAutoStart(«no»).

=MLClose() – закриває ExcelLink та MatLab;

=MLOpen() – ініціює ExcelLink та MatLab.

Копіювання даних з Excel

=MLPutMatrix(“var_name”;diap) – кладе в матрицю var_name дані з діапазону diap;

=MLAppendMatrix(“var_name”;diap) – добавляє до існуючої матриці var_name діапазону diap;

=MLPutVar(“ML_var_name”;VBA_var_name) – переносить дані з Visual Basic (VBA) в MatLab(ML).

Запуск команд MatLab'a з Excel

=MLEvalString(“command”) – виконує команду або групу команд ML, знаходячись в Excel.

Видалення матриці MatLab

=MLDeleteMatrix(“var_name”) – видалення матриці.

Копіювання даних в Excel

=MLGetMatrix(“var_name”;”diap”) – копіює матрицю в Excel, на верхній лівий край вказує діапазон diap;

=MLGetVar(“ML_var_name”;VBA_var_name) – присвоює змінній VBA значення матриці ML.

ООП та MatLab

В основі об’єктно-орієнтованого програмування (ООП) лежать три основних принципа:

  • інкапсуляція – об`єднання даних і програм і передачу даних через вхідні і вихідні параметри функцій. В результаті з`являється новий елемент програмування – об’єкт;
  • наслідування – можливість створення батьківських об’єктів та нових дочірніх об’єктів, наслідуючих властивості батьківських об’єктів. Можливо також множинні наслідування, при яких клас наслідує властивості декількох батьківських об’єктів. На наслідуванні основані системи задання типів даних, дескрипторна графіка і багато інших прийомів програмування;
  • поліморфізм – присвоєння деякій дії одного імені, яке в подальшому використовується по всьому ланцюгу створюваних об’єктів зверху до низу, причому кожний об’єкт виконує цю дію звичним йому способом.

В доповнення до цього ООП в MATLAB дозволяє агрегування об’єктів, тобто об`єднання частин об’єктів або ряду об’єктів в єдине ціле.

Класи об’єктів

Об`єкти можна визначати як деяку структуру, яка належить деякому класу. В MATLAB визначаються сім класів об’єктів:

  • double – числові масиви з елементами – числами подвійної точності;
  • sparse – двовимірні числові або комплексні розріджені матриці;
  • char – масиви символів;
  • struct – масиви структур (записів);
  • cell – масиви комірок;
  • javaarray – масиви Ява;
  • function_handle – дескрипторні функції.

Створення класа або об’єкта

Для створення класа об’єктів або об’єктів, а також для їх ідентифікації використовується функція class.

  1. class(OBJ) – повертає клас вказаного об’єкта OBJ;
  2. OBJ=class(S,’class_name’,PARENT1,PARENT2,…) – створює об’єкт класа ‘class_name’ на базі структури S і батьківських об’єктів PARENT1, PARENT2… при цьому створюваний об’єкт наслідує структуру і поля батьківських об’єктів. Об’єкт OBJ в даному випадку має множинне наслідування;
  3. OBJ=class(struct[ ],’class_name’, PARENT1,PARENT2,…) – не може мати полів, крім унаслідуваних від батьківського об’єкта.

Належність об’єкта до заданого класу

Для контроля належності об’єкта до деякого класу використовується функція isa:

  • isa(OBJ,’class_name’) – повертає логічну одиницю, якщо OBJ належить класу з вказаним іменем. Додатково до вище описаних виділяють класи numeric та single. Але не знаходить клас logical. Потрібно використовувати функцію islogical, щоб перевірити належність до цього класу.
  Приклад:
  >>X=[1 2 3];
  >>isa(X,’char’)
  Ans =
  0


  >>isa(X,’double’)
  Ans =
  1  

Інші функції ООП

Для отримання списку методів даного класу об’єктів часто використовують methodsview name та methods. Відмінність від what class_name є те, що ці функції повертають інформацію також і про клас Java, але інформація виводиться в окремому вікні, не повідомляється інформація про папки, всі методи зі всіх папок зібрані разом і повторювані імена методів видалені.

  1. methodsview name_class або methods name_class –full – в окремому вікні повертають повний опис методів класа, включаючи інформацію про наслідування, а для класа Java – і про атрибути та підписи;
  2. M=methods(‘class_name’,’-full’) – повертає ту ж інформацію в масив комірок М;
  3. M=methods(‘class_name’) – повертає масив комірок з перерахунком методів, що відносяться до заданого класа об’єктів;
  4. Methods class_name – повертає перелік методів в окреме вікно.
  Приклад:
  >> methods char
  
  Methods for class char:
  
  abs                   fix                minus              reshape            
  …

Тести

1. Яка команда (модуль) запускає інтеграцію Matlab в MS Word:

  1. bench
  2. lookfor
  3. notebook
  4. noteabook

2. Форматування в MS Word комірок Matlab:

  1. Noteabook/Noteabook Option
  2. Ctrl+D
  3. Notebook/Notebook Option
  4. Notebook/Evaluate Cell

3. Запуск комірки MS Word на виконання:

  1. Ctrl+Enter
  2. Ctrl+D
  3. Alt+Enter
  4. Ctrl+Win+L

4. Функція відкриття/створення файлу:

  1. FILE* fp; fp=fopen(‘ім`я_ф’,’флаг’);
  2. fp=fopen(‘ім`я_ф’,’флаг’);
  3. fp=write(‘ім`я_ф’,’флаг’);
  4. fclose(fp)

5. Яка функція перевіряє належність логічного об`єкта до певного класу:

  1. isa
  2. islogacal
  3. logacal
  4. inseid

6. inline - функція - що це?

  1. аналог ф-ї Handle
  2. клас функцій здатних замінювати клас
  3. Alt+Enter
  4. Ctrl+Win+L

7. Як можна отримати список методів даного класу? (точна відповідь)

  1. methodsview 'class name'
  2. methodswiev & methods 'class name'
  3. method & methodsview 'class name'
  4. methods & methodsview 'class name'

8. Які параметри функції plot()?
9. Дайте розгорнуту відповідь на тему: "Matlab & MS Word", які функції ядра не працюють в разі інтеграції?