- •Введение
- •Лабораторная работа ип1 Знакомство с Matlab
- •1. Рабочая среда Matlab
- •2. Данные Matlab
- •Типы данных
- •Числовые константы
- •Символьные константы
- •Переменные
- •3. Выражения
- •3.1. Арифметические выражения
- •3.2. Логические выражения
- •3.3. Порядок вычисления выражений
- •4. Сообщения об ошибках и исправление ошибок
- •5. Завершение вычислений
- •6. Завершение работы с системой
- •7. Резюме
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •Лабораторная работа ип2 работа с матрицами в matlab
- •1. Общие сведения
- •2. Одномерные массивы – векторы
- •3. Двумерные массивы – матрицы
- •4. Использование двоеточия
- •4.1. Автозаполнение
- •4.2. Индексация
- •5. Поэлементные и матричные операции
- •6. Стандартные функции для работы с матрицами
- •7. Логическое индексирование
- •8. Контрольные вопросы
- •9. Индивидуальные задания
- •10. Упражнения
- •2. Диалоговый ввод/вывод
- •3. Управление последовательностью исполнения операторов
- •3.1. Оператор условия if
- •3.2. Оператор переключения
- •3.3. Оператор цикла с определенным числом повторений
- •3.4. Оператор цикла с неопределенным числом повторений
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип4 визуализация данных в matlab
- •1. Общие сведения
- •2. Построение таблицы значений функции
- •3. Двумерная графика
- •3.1. Общие правила построения графиков
- •3.2. Оформление графиков
- •3.3. Построение графиков
- •3.4. Управление свойствами графиков
- •4. Трехмерная графика
- •4.1. Общие принципы построения трехмерных графиков
- •4.2. Построение трехмерных графиков
- •4.3. Управление свойствами трехмерных графиков
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип5 файл-функции
- •2. Описание m-функции
- •3. Обращение к m-функции
- •4. Параметры-функции
- •5. Разновидности m-функций
- •5.1. Подфункции
- •5.2. Вложенные функции
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •2. Аппроксимация
- •2.1. Моделирование полиномом по методу
- •2.2. Аппроксимация произвольной функцией
- •3. Интерполяция
- •3.1. Кусочная интерполяция
- •3.2. Кубические сплайны
- •3.3. Интерполяция произвольной нелинейной функцией
- •4. Контрольные вопросы
- •5. Индивидуальные задания
- •Лабораторная работа ип7 Вычисление функций разложением в ряд
- •1. Общие сведения
- •2. Индивидуальное задание
- •Лабораторная работа ип8 Решение нелинейных уравнений в среде Matlab
- •1. Общие сведения
- •2. Поиск корней полиномов
- •3. Решение одного нелинейного уравнения
- •4. Решение систем нелинейных уравнений
- •5. Контрольные вопросы
- •6. Индивидуальные задания
- •Лабораторная работа ип9 обмен данными с текстовым файлом
- •1. Общие сведения
- •2. Открытие файла
- •3. Запись в текстовый файл
- •3.1. Запись строковых значений
- •3.2. Запись числовых значений
- •4. Чтение из текстового файла
- •4.1. Последовательное чтение строк
- •4.2. Последовательное чтение нескольких символов
- •4.3. Чтение чисел из текстового файла
- •4.4. Альтернативный доступ к текстовому файлу
- •5. Закрытие файла
- •6. Контрольные вопросы
- •7. Индивидуальные задания
- •Заключение
- •Список рекомендуемой литературы
- •Программирование в matlab
- •428015 Чебоксары, Московский просп., 15
4. Чтение из текстового файла
4.1. Последовательное чтение строк
Для считывания строк из открытого текстового файла используется функция fgetl
СтроковаяПеременная=fgetl(ИдентификаторФайла)
Входным ее аргументом является идентификатор файла, присвоенный ему при открытии, а выходным – строковая переменная. Каждое обращение к fgetl позволяет поочередно считывать строки по одной от начала до конца файла. Символы признака конца строки не считываются. Каждый fgetl считывает символы текущей строки до тех пор, пока не встретится признак конца строки или не будут исчерпаны все символы файла. Таким образом, с помощью fgetl нельзя прочитать один или несколько символов строки. Только строку целиком! Например, если открытый ранее для чтения файл data.txt содержит следующую информацию (символ ⌂ обозначает пробел, признаки конца первой и второй строк не показаны)
1⌂12⌂-7⌂
-4.5⌂6⌂0.512⌂
123⌂55.5⌂1
то прочитать все данные можно, выполнив следующий фрагмент:
s1=fgetl(f1)
s2=fgetl(f1)
s3=fgetl(f1)
в результате получим три текстовые строки длиной 8, 13 и 10 символов соответственно
s1 =
1⌂12⌂-7⌂
s2 =
-4.5⌂6⌂0.512⌂
s3 =
123⌂55.5⌂1
Это будет именно текст, а не числа! Преобразовать последовательность символов в числа можно с помощью str2num. При этом пробелы воспринимаются как разделители чисел. Например
n1=str2num(s1)
n1 =
1 12 -7
В результате n1 будет являться вектором-строкой из трех чисел, над которыми можно выполнять арифметические операции.
Внимание: попытка считать из файла больше строк, чем в нем храниться или чтение из пустого файла не вызывают аварийного завершения программы. Выходные переменные при этом получают значения, равные минус один. Во избежание недоразумений чтение из файла лучше выполнять в цикле while до тех пор, пока не будет достигнут конец файла. Контроль достижения конца файла осуществляет функция feof, входным аргументом которой является идентификатор файла. Функция возвращает логическую единицу, если при чтении достигнут конец файла (нет больше строк для чтения), и логический ноль в противном случае.
[f1,message]=fopen('data.txt','rt');
if f1~= -1
s=[];
while feof(f1)==0
s=[s fgetl(f1)];
end
n=str2num(s)
else
disp(['Error: ' message])
end
При успешном открытии файла получим линейный массив из девяти чисел
n =
Columns 1 through 6
1.0000 12.0000 -7.0000 -4.5000 6.0000 0.5120
Columns 7 through 9
123.0000 55.5000 1.0000
Считать данные из файла data.txt, рассмотренного выше, в виде матрицы 3×3 можно следующим образом:
a=[];
while feof(f1)==0
a=[a; str2num(fgetl(f1))];
end
Таким образом, строки символов считываются из текстового файла просто, а для чтения числовой информации необходимо предпринять дополнительные меры по преобразованию типа.
4.2. Последовательное чтение нескольких символов
Один или несколько символов строки можно прочитать из текстового файла с помощью функции fgets, у которой могут быть один или два входных аргумента – идентификатор файла и количество считываемых символов. Чтение начинается с текущей позиции строки и продолжается до тех пор, пока не будет прочитано указанное количество символов либо пока не встретится признак конца строки (символ LF признака конца строки считывается), или данные не исчерпаются. При попытке прочитать больше данных, чем возможно, функция fgets возвращает значение -1.
Пример. Пусть файл num.txt содержит одну строку – цепочку из пяти символов '12345'. Тогда выполнение программы
f3=fopen('num.txt','rt');
d1=fgets(f3,2)
d2=fgets(f3,3)
d3=fgets(f3,1)
приведет к получению следующих результатов:
d1 =
12
d2 =
345
d3 =
-1
Причем переменные d1 и d2 будут строками из двух и трех символов соответственно, а d3 – числовой переменной.