М.А.И.
(Национальный Исследовательский Университет)
Лабораторная работа № 13
Практикум № 12
ФАЙЛЫ
Вариант № 24
Оформил: Абрамов Иван Андреевич
Проверил: Кривилёв А. В.
Москва 2012
Цель работы: Приобретение навыков работы с текстовыми и двоичными файлами в системе MATLAB.
Задание 1.
- разработать функцию для формирования текстового файла, содержащего форматированную таблицу исходных данных для построения кривой линии в декартовой системе координат;
function TrMaklorenaText(xl,xr,xs,filename)
%TRMAKLORENATEXT- формирование в текстовом файле таблици значаений
%трисектрисы маклорнеа
% Таблица формируется для значениё на отрезке [xl; xr]
% с шагом xs
%filename - строка содержащая имя создоваемого текстового файла
%Автор: И.А. Абрамов
%версия: 1.0. Дата: 9.05.2012
if nargin ~=4
error (' Функция должна иметь 4 входных параметра!')
end
if ~ischar(filename)
errar(' Имя файла должно записываться в формате char')
end
fid = fopen (filename,'wt');
if fid == -1
error(' Ошибка при создании файла! ')
end
nametbl = 'таблица значения r =1./cos(h/3)';
|
|
nameh ='h';
nametris = 'r';
fprintf (fid,'---------------------------------\n');
fprintf (fid,'|%26s|\n',nametbl);
fprintf (fid,'---------------------------------\n');
fprintf (fid,'| %6s | %8s |\n',nameh,nametris);
fprintf (fid,'---------------------------------\n');
h=xl:xs:xr'; r=1./cos(h/3);
fprintf(fid,'|%10.4f |%10.4f |\n',[h;r]);
fprintf (fid,'---------------------------------\n');
fclose(fid);
---------------------------------
|таблица значения r =1./cos(h/3)|
---------------------------------
| h | r |
---------------------------------
| -3.1416 | 2.0000 |
| -2.7489 | 1.6427 |
| -2.3562 | 1.4142 |
| -1.9635 | 1.2605 |
| -1.5708 | 1.1547 |
| -1.1781 | 1.0824 |
| -0.7854 | 1.0353 |
| -0.3927 | 1.0086 |
| 0.0000 | 1.0000 |
| 0.3927 | 1.0086 |
| 0.7854 | 1.0353 |
| 1.1781 | 1.0824 |
| 1.5708 | 1.1547 |
| 1.9635 | 1.2605 |
| 2.3562 | 1.4142 |
| 2.7489 | 1.6427 |
| 3.1416 | 2.0000 |
---------------------------------
- Написать функцию для ввода данных из созданного файла и построения графика.
function [x,y] = tbl2num(filename)
%TBL2NUM - преобразование таблицы в массивы чисел с использованием
%форматированного ввода данных из файла
%filename - имя файла, который содержит таблицу данных
% х, у - считанные из таблицы данные (предаставляются в виде векторов)
%Автор: И.А. Абрамов
%версия: 1.0. Дата: 9.05.2012
if ~ischar(filename)
errar(' Имя файла должно быть строкой!')
end
fid=fopen(filename, 'rt');
if fid == -1
error(' Ошибка при открытии файла! ')
end
strcount = 0;
while ~feof(fid)
strcount=strcount+1;
fgetl (fid);
end
fclose(fid);
fid=fopen(filename,'rt');
rownumber=strcount-6;
for k=1:5
fgetl(fid);
end
[num,count]=fscanf(fid, '%*s %f %*s %f %*s',[2 rownumber]);
if count ~= 2*rownumber
error('Ошибка при чтении файлов ')
else
h=num(1,:);
r=num(2,:);
end
[x,y]=pol2cart(h,r);
plot(x,y), axis equal, grid on,xlabel('x'),ylabel('y'),hold on
fclose(fid);