
- •Оглавление
- •Глава 1. Краткие основы работы в matlab
- •1.1. Интерфейс.
- •1.2. Редактирование м-файлов
- •1.3. Построение графиков
- •1.4. Построение поверхности
- •1.5. Операции с матрицами.
- •1.6. Нелинейные уравнения и системы
- •1.7. Интегрирование
- •1.8. Решение обыкновенных дифференциальных уравнений и систем.
- •1.9. Поиск экстремума функции одной переменной.
- •1.10. Поиск экстремума функции нескольких переменной.
- •Глава 2. Моделирование простых гидравлических систем
- •2.1. Стационарный режим движения жидкости
- •Математическое описание процесса
- •Блок-схема алгоритма расчета
- •Программа расчета процесса
- •2.2. Нестационарный режим движения жидкости
- •Блок-схема алгоритма расчета
- •Программа расчета процесса
- •Глава 3. Моделирование стационарных режимов процессов теплопередачи в теплообменниках различных типов
- •3.1. Теплообменник типа смешение–смешение
- •Математическое описание процесса
- •Программа расчета процесса
- •3.2. Теплообменник типа смешение–вытеснение
- •Математическое описание процесса
- •Блок-схема алгоритма расчета
- •Программа расчета процесса
- •3.3. Прямоточный теплообменник типа труба в трубе (решение задачи Коши)
- •Математическое описание процесса
- •Блок-схема алгоритма расчета
- •Программа расчета процесса
- •3.4. Противоточный теплообменник типа труба в трубе (решение краевой задачи)
- •Математическое описание процесса
- •Программа расчета процесса
- •Блок-схема алгоритма расчета
- •Кафедра информатики и компьютерного проектирования
Блок-схема алгоритма расчета
В блок-схеме алгоритма расчета стационарного режима гидравлической системы (рис. 2.2) используются два алгоритмических блока, в которых реализуются два численных алгоритма:
метод половинного деления – блок (7) для определения Н1;
вычисление корней квадратного уравнения – блок (10, 11) для определения Н2 и Р8.
Топология гидравлической системы отображается вычислительными блоками слева от алгоритмического блока (7). Результатом расчета по вычислительным блокам (9), (8), (1), (3), (6), (5), (2), (4) является значение величины функции:
f7 = v2 + v5 – v4, (14)
которая используется методом половинного деления в алгоритмическом блоке (7) для определения уровня жидкости Н1 в первой емкости.
Рис. 2.2. Блок-схема алгоритма расчёта стационарного режима движения жидкости в гидравлической системе, изображенной на рис. 2.1
Программа расчета процесса
Обозначения переменных в тексте программы
Исходные
данные.
k1,
k2,
k3,
k4,
k5
– коэффициенты пропускной
способности клапанов
(см. рис. 2.1); Rho
– плотность жидкости ρ; Hg1
–
;Hg2
–
;Pn
– исходное давление газа в пустой
емкости PN
(в
обеих одинаковое, обычно атмосферное);
P1,
P2,
P3,
P4
– давления жидкости на входе в систему
и, соответственно, на выходе из нее; H1
–
(предполагаемый начальный уровень
жидкости в емкости).
Вычисляемые переменные. v1, v2, v3, v4, v5 – расходы жидкости через клапаны в соответствии с рис. 2.1; P5, P6, P7, P8 – давления жидкости в емкостях; H1, H2 – уровни жидкости после заполнения емкостей.
Для построения графика необходимо выбрать исходную величину-аргумент (будет отображаться по горизонтальной оси), диапазон и шаг ее изменения, а также величину-функцию, зависящую от аргумента (вертикальная ось). Построенный график покажет, как будет изменяться зависимая величина при изменении аргумента (при этом значения всех остальных исходных величин, которые были введены в окна ввода исходных величин будут оставаться неизменными) – рис. 2.4.
Рис.
2.3. Ввод исходных данных и получение
расчетных результатов
Рис.
2.4.
Построение графиков: зависимости уровня
жидкости в емкости
№1
от плотности жидкости
Приступая к работе по выполнению задачи на компьютере, нужно выполнить следующую последовательность обращений к кнопкам панели инструментов File→New→M-file, что позволяет открыть окно Editor (то есть редактор М-файлов). В этом окне следует напечатать весь текст необходимой программы (создавать не только лишь отдельные М-файлы для отдельных функций), которая будет выполняться при указании соответствующего этой полной программе имени М-файла в командной строке в Command Window. Иначе программу можно запустить командой Debug→Run в меню редактора М-файлов.
При сохранении М-файла (File→Save) в открывающемся окне нужно указать место и имя этого документа. Имя сохраняемого файла должно совпадать с именем описанной в нем функции (то есть описанная в нем программа считается функцией, и ее описание начинается с указания какого-нибудь имени этой функции, под которым она дальше и будет вызваться для исполнения).
Если какие-то М-файлы уже созданы ранее, то их можно посмотреть или отредактировать с помощью команды File→Open.
Текст программы с комментариями1
Функция sgn возвращает знак числа, преобразованный в логическую переменную znak:
function [znak]=sgn(a)
if a<0
znak=-1;
elseif a>0
znak=1;
else
znak=0;
end
end
Функция VvodIshodnDannih считывает значения исходных переменных, введенные пользователем в окна текстового ввода, и присваивает эти значения соответствующим переменным:
function[k1,k2,k3,k4,k5,Rho,Hg1,Hg2,Pn,P1,P2, P3,P4,H1]=VvodIshodnDannih(hObject, eventdata, handles)
k1=str2double(get(handles.edit1,'String'));
% Функция str2double осуществляет преобразование строки символов в число, например, строка 123 будет преобразована из последовательности отдельных символов 1, 2 и 3 в число 123 и сохранена в возвращаемую функцией переменную числового типа double, то есть вещественное число (десятичная дробь).
% Функция get(handles.edit1,'String') возвращает строку символов, которая сохранена в строковой переменной под именем String.
% handles.edit1 используется для того, чтобы обратиться к окну визуального интерфейса. Он содержит окно для ввода/вывода текста типа Text Edit, причем таких окон может быть много. Чтобы обратиться к какому-то определенному, используется его индивидуальное название edit1. Таким образом, выражение ааа=str2double(get(handles.edit1,'String')); означает, что из указанного окна текстового ввода будет считана строка сиволов, которая затем будет преобразована в число, а после этого переменная ааа будет приравнена этому числу.
k2=str2double(get(handles.edit2,'String'));
k3=str2double(get(handles.edit3,'String'));
k4=str2double(get(handles.edit4,'String'));
k5=str2double(get(handles.edit5,'String'));
Rho=str2double(get(handles.edit6,'String'));
Hg1=str2double(get(handles.edit7,'String'));
Hg2=str2double(get(handles.edit8,'String'));
Pn=1000*str2double(get(handles.edit9,'String'));
P1=1000*str2double(get(handles.edit10,'String'));
P2=1000*str2double(get(handles.edit11,'String'));
P3=1000*str2double(get(handles.edit12,'String'));
P4=1000*str2double(get(handles.edit14,'String'));
H1=str2double(get(handles.edit13,'String'));
end
Функция VivodArgumentovNaEkran выводит, предварительно преобразовав, переменные (исходные, т. е. введенные пользователем) на экран в соответствующие им окна текстового ввода/вывода. Она нужна при чтении данных из файла, чтобы обратить внимание пользователя на то, каковы были исходные значения в задаче, сохраненной в файл.
function[]=VivodArgumentovNaEkran(VectorArg,hObject, eventdata, handles)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
k1=VectorArg(1); k2=VectorArg(2); k3=VectorArg(3); k4=VectorArg(4); k5=VectorArg(5); Rho=VectorArg(6); Hg1=VectorArg(7);
Hg2=VectorArg(8); Pn=VectorArg(9); P1=VectorArg(10); P2=VectorArg(11); P3=VectorArg(12); P4=VectorArg(13); H1=VectorArg(14);
%vivod argumentov na ekran2
S=sprintf('%g',k1);
set(handles.edit1,'String',S);
%Выражение S=sprintf('%g',k1); означает, что переменная k1 будет преобразована в соответствии с определенным форматом (например, формат %g означает, что нужно преобразовать число в десятичную дробь со знаком), затем преобразованная переменная k1 в строку символов, и, наконец, строка символов должна быть сохранена в переменную строкового типа S.
%Функция set(handles.edit1,'String',S); выводит в окно текстового вывода (см. выше) строковую переменную S.
S=sprintf('%g',k2);
set(handles.edit2,'String',S);
S=sprintf('%g',k3);
set(handles.edit3,'String',S);
S=sprintf('%g',k4);
set(handles.edit4,'String',S);
S=sprintf('%g',k5);
set(handles.edit5,'String',S);
S=sprintf('%g',Rho);
set(handles.edit6,'String',S);
S=sprintf('%g',Hg1);
set(handles.edit7,'String',S);
S=sprintf('%g',Hg2);
set(handles.edit8,'String',S);
S=sprintf('%g',Pn);
set(handles.edit9,'String',S);
S=sprintf('%g',P1);
set(handles.edit10,'String',S);
S=sprintf('%g',P2);
set(handles.edit11,'String',S);
S=sprintf('%g',P3);
set(handles.edit12,'String',S);
S=sprintf('%g',P4);
set(handles.edit14,'String',S);
S=sprintf('%g',H1);
set(handles.edit13,'String',S);
end
Функция ReshitZadachu решает задачу по нахождению значений переменных, которые потом будут выведены на экран отдельно вызываемой функцией вывода VivodResultNaEkran:
function [VectorRes]=ReshitZadachu(VectorArg)
k1=VectorArg(1); k2=VectorArg(2); k3=VectorArg(3); k4=VectorArg(4); k5=VectorArg(5); Rho=VectorArg(6); Hg1=VectorArg(7);
Hg2=VectorArg(8); Pn=VectorArg(9); P1=VectorArg(10); P2=VectorArg(11); P3=VectorArg(12); P4=VectorArg(13); H1=VectorArg(14);
Функция findH осуществляет вычисления в соответствии с формулами (9):
function f=findH(k1,k2,k3,k4,k5,Rho,Hg1,Hg2,Pn,P1,P2,P3,P4,H1)
P7=Hg1*Pn/(Hg1-H1);
P5=P7+Rho*9.81*H1;
v1=k1*sqrt(abs(P1-P5))*sgn(P1-P5);
v3=k3*sqrt(abs(P5-P3))*sgn(P5-P3);
v5=v1-v3;
P6=P5-sgn(v5)*(v5/k5)^2;
v2=k2*sqrt(abs(P2-P6))*sgn(P2-P6);
v4=k4*sqrt(P6-P4)*sgn(P6-P4);
f=v2+v5-v4;
end
Далее методом деления пополам осуществляется вычисление высоты жидкости в первой емкости:
%podgotovka k deleniju popolam (naiti minimum f(H1) )
%granici poiska
Hleft=0;
Hright=Hg1*(P1-Pn)/P1;
%shag poiska
stepH=(Hright-Hleft)/9;
x(1)=Hleft;
y(1)=findH(k1,k2,k3,k4,k5,Rho,Hg1,Hg2,Pn,P1,P2,P3,P4,x(1));
%poisk intervala smeni znakov
for i=2:10
x(i)=x(i-1)+stepH;
y(i)=findH(k1,k2,k3,k4,k5,Rho,Hg1,Hg2,Pn,P1,P2,P3,P4,x(i));
if y(i)*y(i-1)<0
Hleft=x(i-1);
Hright=x(i);
break;
end
end
%delenije popolam -- naiti H1
while abs(Hleft-Hright)>0.0001
Hmid=(Hright+Hleft)/2;
yleft=findH(k1,k2,k3,k4,k5,Rho,Hg1,Hg2,Pn,P1,P2,P3,P4,Hleft);
ymid=findH(k1,k2,k3,k4,k5,Rho,Hg1,Hg2,Pn,P1,P2,P3,P4,Hmid);
yright=findH(k1,k2,k3,k4,k5,Rho,Hg1,Hg2,Pn,P1,P2,P3,P4,Hright);
if yleft==0
H1=Hleft;
break;
elseif ymid==0
H1=Hmid;
break;
elseif yright==0
H1=Hright;
break;
end
if yleft*ymid<0
Hright=Hmid;
elseif yright*ymid<0
Hleft=Hmid;
end
H1=Hmid;
End
Далее вычисляется высота жидкости во второй емкости:
%kvadratnoje uravnenije
%H2^2*(Rho*9.81)+H2*(-P6-Rho*9.81*Hg2)+(P6*Hg2-Pn*Hg2)=0
%koefficienti polinoma
p(1)=Rho*9.81;
p(2)=-P6-Rho*9.81*Hg2;
p(3)=P6*Hg2-Pn*Hg2;
%korni polinoma
korni=roots(p);
H2=0;%objavili peremennuju H2 i inicializirovali ee
if (korni(1)>0) & (korni(1)<Hg2)
H2=korni(1);
else
H2=korni(2);
end
Далее вычисляется Р8:
P8=Pn*Hg2/(Hg2-H2);
VectorRes=[v1,v2,v3,v4,v5,P5,P6,P7,P8,H1,H2];
end
Функция VivodResultNaEkran выводит, предварительно преобразовав в строку текста, переменные – результаты вычислений на экран в окна вывода:
function[]=VivodResultNaEkran(VectorRes,hObject, eventdata, handles)
v1=VectorRes(1); v2=VectorRes(2); v3=VectorRes(3); v4=VectorRes(4); v5=VectorRes(5);
P5=VectorRes(6); P6=VectorRes(7); P7=VectorRes(8); P8=VectorRes(9); H1=VectorRes(10); H2=VectorRes(11);
%vivod resultatov na ekran
S=sprintf('%g',H1);
set(handles.edit24,'String',S);
S=sprintf('%g',v1);
set(handles.edit15,'String',S);
S=sprintf('%g',v2);
set(handles.edit16,'String',S);
S=sprintf('%g',v3);
set(handles.edit17,'String',S);
S=sprintf('%g',v4);
set(handles.edit18,'String',S);
S=sprintf('%g',v5);
set(handles.edit19,'String',S);
S=sprintf('%g',P5/1000);
set(handles.edit20,'String',S);
S=sprintf('%g',P6/1000);
set(handles.edit21,'String',S);
S=sprintf('%g',P7/1000);
set(handles.edit22,'String',S);
S=sprintf('%g',P8/1000);
set(handles.edit23,'String',S);
S=sprintf('%g',H2);
set(handles.edit25,'String',S);
end
Функция PostrGrafic строит график, который выводится на экран:
function[k1Array,v1Array,xLlabel,yLlabel,NumberSteps]=PostrGrafic(VectorRes, VectorArg,LeftNameVar,NumberSteps,StepGr,hObject, eventdata, handles,NameVar,NameArg)
% Array означает массив
if (NameArg>8)&(NameArg<14)
LeftNameVar=LeftNameVar*1000;
StepGr=StepGr*1000;
end
VectorArg(NameArg)=LeftNameVar;
k1Array(1)=LeftNameVar;
[VectorRes]=ReshitZadachu(VectorArg);
v1Array(1)=VectorRes(NameVar);
for i=2:NumberSteps+1
k1Array(i)=k1Array(i-1)+StepGr;
VectorArg(NameArg)=k1Array(i);
[VectorRes]=ReshitZadachu(VectorArg);
v1Array(i)=VectorRes(NameVar);
end
plot(k1Array,v1Array,'o-'); % в апострофах указан тип линии на графике: 'o-' синяя линия с маркерами-кружочками; 'k-' черная линия без маркеров,
set(gca,'XGrid','on'); %покрывает сеткой область построения графикой
set(gca,'YGrid','on');
TextVectorArg=[' k1 ','k2 ','k3 ','k4 ','k5 ','Rho(kg/m3) ','Hg1 (m) ','Hg2 (m) ','Pn (Pa) ','P1 (Pa) ','P2 (Pa) ','P3 (Pa) ','P4 (Pa) ','H1 (m) ']; %подписи к осям
TextVectorRes=[' v1(l/s) ','v2(l/s) ','v3(l/s) ','v4(l/s) ','v5(l/s) ',' P5(Pa) ',' P6(Pa) ',' P7(Pa) ',' P8(Pa) ','H1 (m) ','H2 (m) '];
xLlabel=' ';
for i=((NameArg-1)*11+1):(NameArg*11+1)
xLlabel=strcat(xLlabel,TextVectorArg(i));
end
yLlabel=' ';
for i=((NameVar-1)*8+1):(NameVar*8+1)
yLlabel=strcat(yLlabel,TextVectorRes(i));
end
xlabel(xLlabel);
ylabel(yLlabel);
end
Эта функция pushbutton13_Callback выполняется после нажатия на кнопку интерфейса с надписью ПОСТРОИТЬ ГРАФИК:
% --- Executes on button press in pushbutton13.3
function [k1Array,v1Array,xLlabel,yLlabel,NumberSteps] =pushbutton13_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton13 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
NameVar=str2double(get(handles.edit31,'String'));
LeftNameVar=str2double(get(handles.edit29,'String'));
RightNameVar=str2double(get(handles.edit30,'String'));
NameArg=str2double(get(handles.edit28,'String'));
StepGr=str2double(get(handles.edit32,'String'));
Вызывает функцию VvodIshodnDannih описанную выше:
[k1,k2,k3,k4,k5,Rho,Hg1,Hg2,Pn,P1,P2,P3,P4,H1]=VvodIshodnDannih(hObject, eventdata, handles);
NumberSteps=round((RightNameVar-LeftNameVar)/StepGr);
%objavlyajem peremennije
v1=0; v2=0; v3=0; v4=0; v5=0; P5=0; P6=0; P7=0; P8=0; H1=0; H2=0;
VectorRes=[v1,v2,v3,v4,v5,P5,P6,P7,P8,H1,H2];
VectorArg=[k1,k2,k3,k4,k5,Rho,Hg1,Hg2,Pn,P1,P2,P3,P4,H1];
Вызывает функцию PostrGrafic описанную выше:
[k1Array,v1Array,xLlabel,yLlabel,NumberSteps]=PostrGrafic(VectorRes, VectorArg,LeftNameVar,NumberSteps,StepGr,hObject, eventdata, handles,NameVar,NameArg);
end
Выполняется после нажатия на кнопку интерфейса с надписью ВЫЧИСЛИТЬ:
% --- Executes on button press in pushbutton3.
function [VectorRes,VectorArg]=pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Вызывает функцию VvodIshodnDannih описанную выше:
[k1,k2,k3,k4,k5,Rho,Hg1,Hg2,Pn,P1,P2,P3,P4,H1]=VvodIshodnDannih(hObject, eventdata, handles);
VectorArg=[k1,k2,k3,k4,k5,Rho,Hg1,Hg2,Pn,P1,P2,P3,P4,H1];
v1=0; v2=0; v3=0; v4=0; v5=0; P5=0; P6=0; P7=0; P8=0; H1=0; H2=0;
VectorRes=[v1,v2,v3,v4,v5,P5,P6,P7,P8,H1,H2];
Вызывает функцию ReshitZadachu описанную выше:
[VectorRes]=ReshitZadachu(VectorArg);
Вызывает функцию VivodResultNaEkran описанную выше:
VivodResultNaEkran(VectorRes,hObject, eventdata, handles);
end
Выполняется после нажатия на кнопку интерфейса с надписью СОХРАНИТЬ В ФАЙЛ и сохраняет результаты в файл:
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles);
Вызывает функцию, соответствующую нажатию кнопки с надписью ВЫЧИСЛИТЬ, и получает результаты вычислений:
%Vichislit resultati
[VectorRes,VectorArg]=pushbutton3_Callback(hObject, eventdata, handles);
Создает и открывает для записи файл C:\MATLAB701\work\S279Res.txt, предполагая, что рабочая директория MATLAB – это C:\MATLAB701\work (в противном случае перед применением программу надо модифицировать, поместив на это место соответствующую папку и путь к ней):
%otkrit fail dlya zapisi
[f,p]=uiputfile('C:\MATLAB701\work\S279Res.txt','Окно выбора');
KudaZapisat=strcat(p,f);
f=fopen(KudaZapisat,'wt');
%gotovim dannije dlja avtomaticheskogo schitivanija
for i=1:11
fprintf(f,'%g\t',VectorRes(i));
end
for i=1:14
fprintf(f,'%g\t',VectorArg(i));
end
%sohranit v fail resultati vichislenij
fprintf(f,'\nS279_STAT_REG_IN_HIDRAVL_SIST_08\n');
fprintf(f,'RESULTATI VICHISLENIY\n');
TextString=strcat(' v1(l/s) ','v2(l/s) ','v3(l/s) ','v4(l/s) ','v5(l/s) ',' P5(Pa) ',' P6(Pa) ',' P7(Pa) ',' P8(Pa) ','H1 (m) ','H2 (m) ');
fprintf(f,TextString);
fprintf(f,'\n');
for i=1:11
fprintf(f,'%g\t',VectorRes(i));
end
%sohranit v fail ishodnije argumenti
fprintf(f,'\nARGUMENTI VICHISLENIY\n');
TextString=strcat(' k1 ','k2 ','k3 ','k4 ','k5 ','Rho(kg/m3) ','Hg1 (m) ','Hg2 (m) ','Pn (Pa) ','P1 (Pa) ','P2 (Pa) ','P3 (Pa) ','P4 (Pa) ','H1 (m) ');
fprintf(f,TextString);
fprintf(f,'\n');
for i=1:14
fprintf(f,'%g\t',VectorArg(i));
end
fclose(f);
end
Выполняется после нажатия на кнопку интерфейса с надписью ОТКРЫТЬ ИЗ ФАЙЛА и открывает данные из файла:
% --- Executes on button press in pushbutton14.
function pushbutton14_Callback(hObject, eventdata, handles)
%Otkrit is faila
[f,p]=uigetfile('C:\MATLAB701\work\S279Res*.txt','Окно выбора');
OtkudaChitat=strcat(p,f);
f=fopen(OtkudaChitat,'rt');
%chitat is faila
for i=1:11
VectorRes(i)=fscanf(f,'%g',1);
end
for i=1:14
VectorArg(i)=fscanf(f,'%g',1);
if (i>8)&(i<14)
VectorArg(i)=(VectorArg(i))/1000;
end
end
fclose(f);
%vivod na ekran
VivodResultNaEkran(VectorRes,hObject, eventdata, handles);
VivodArgumentovNaEkran(VectorArg,hObject, eventdata, handles);
end
Выполняется после нажатия на кнопку интерфейса с надписью СОХРАНИТЬ ГРАФИК В ФАЙЛ:
% --- Executes on button press in pushbutton8.
function pushbutton8_Callback(hObject, eventdata, handles)
%postroit grafic [k1Array,v1Array,xLlabel,yLlabel,NumberSteps]=pushbutton13_Callback(hObject, eventdata, handles);
%Sohranit grafic v fail
[f,p]=uiputfile('C:\MATLAB701\work\S279Graf.txt','Окно выбора');
KudaZapisat=strcat(p,f);
f=fopen(KudaZapisat,'wt');
%gotovim dannije dlja avtomaticheskogo chitivanija
fprintf(f,'%d\t',NumberSteps);
for i=1:(NumberSteps+1)
fprintf(f,'%g\t',k1Array(i));
end
fprintf(f,'\n');
for i=1:(NumberSteps+1)
fprintf(f,'%g\t',v1Array(i));
end
%zapisivajem argumenti [k1,k2,k3,k4,k5,Rho,Hg1,Hg2,Pn,P1,P2,P3,P4,H1]=VvodIshodnDannih (hObject, eventdata, handles);
VectorArg=[k1,k2,k3,k4,k5,Rho,Hg1,Hg2,Pn,P1,P2,P3,P4,H1];
for i=1:14
fprintf(f,'%g\t',VectorArg(i));
end
%podpisi k osyam grafica
fprintf(f,'%s\t%s\n',xLlabel,yLlabel);
fclose(f);
end
Выполняется после нажатия на кнопку интерфейса с надписью ОТКРЫТЬ ГРАФИК ИЗ ФАЙЛА:
% --- Executes on button press in pushbutton15.
function pushbutton15_Callback(hObject, eventdata, handles)
%otkrit grafic is faila
[f,p]=uigetfile('C:\MATLAB701\work\S279Graf*.txt','Окно выбора');
OtkudaChitat=strcat(p,f);
f=fopen(OtkudaChitat,'rt');
%chitat is faila
NumberSteps=fscanf(f,'%d',1);
for i=1:NumberSteps+1
k1Array(i)=fscanf(f,'%g',1);
end
for i=1:NumberSteps+1
v1Array(i)=fscanf(f,'%g',1);
end
for i=1:14
VectorArg(i)=fscanf(f,'%g',1);
if (i>8)&(i<14)
VectorArg(i)=(VectorArg(i))/1000;
end
end
xLlabel=fscanf(f,'%s',1);
yLlabel=fscanf(f,'%s',1);
fclose(f);
%stroim grafic
plot(k1Array,v1Array,'o-');
set(gca,'XGrid','on');
set(gca,'YGrid','on');
xlabel(xLlabel);
ylabel(yLlabel);
%vivod na ekran
VivodArgumentovNaEkran(VectorArg,hObject, eventdata, handles);
End