Рис.1.72.Интерфейс большой программы с вводом матричных данных

Если нас не устраивают такие окна для ввода матриц данных, как в примере 2, то создадим несколько улучшенные (Рис.1.73).

Он отличается от рассмотренного в примере 2 своими функциями ввода и вывода данных.

Приведем список названий кнопок и их обозначений (тэгов) в программе (рис.1.73):

pushbutton1 Ввести размеры матрицы;

pushbutton2 Ввести новый элемент;

pushbutton3 Сохранить;

pushbutton4 Открыть.

Приведем список названий окон ввода / вывода и их обозначений (тэгов) в программе (рис.1.73):

edit1 число строк;

edit2 число столбцов;

edit3 значение (числовое) элемента матрицы при вводе;

edit4 номер строки матрицы, в которой расположен элемент;

edit5 номер столбца матрицы, в котором расположен элемент;

edit6 главное, самое большое окно ввода / вывода.

Рис.1.73. Интерфейс ввода-вывода и редактирования матрицы.

Сохранение данных в файл

% --- Executes on button press in pushbutton3. SAVE

function pushbutton3_Callback(hObject, eventdata, handles)

NumberRows=str2double(get(handles.edit1,'String'));

NumberColumns=str2double(get(handles.edit2,'String')); 

Matrix=str2num(get(handles.edit6,'String')); % считывание матрицы из главного окна интерфейса

   %OPEN FILE WT

   [f,p]=uiputfile('C:\MATLAB701\work\Book1\Primer_Matr2D.txt','Окно выбора');

   KudaZapisat=strcat(p,f);

   f=fopen(KudaZapisat,'wt');

   fprintf(f,'%d\t%d\n',NumberRows,NumberColumns);

   %SAVE VALUES OF ARGUMENTS AND RESULTS

   for i=1:NumberRows

       for j=1:NumberColumns

           fprintf(f,'%g\t',Matrix(i,j));

       end

       fprintf(f,'\n');

   end

   fclose(f);

end

 Ввод матрицы пользователем в окне интерфейса.

Ввод размеров матрицы.

%Executes on button press in pushbutton1. INPUT MATRIX DIMENSIONS

function pushbutton1_Callback(hObject, eventdata, handles)

S=sprintf('%g',1);

set(handles.edit4,'String',S);

S=sprintf('%g',1);

set(handles.edit5,'String',S);

S=sprintf('%s',' ');

set(handles.edit6,'String',S);

end

Ввод нового элемента матрицы.

%Executes on button press in pushbutton2. INPUT NEW MATRIX ELEMENT

function pushbutton2_Callback(hObject, eventdata, handles)

NumberRows=str2double(get(handles.edit1,'String'));

NumberColumns=str2double(get(handles.edit2,'String'));

i=str2double(get(handles.edit4,'String')); % номер строки элемента матрицы

j=str2double(get(handles.edit5,'String')); % номер столбца элемента матрицы

Matrix=str2num(get(handles.edit6,'String')); % считать матрицу из главного окна

   if i<=NumberRows   

       if j<=NumberColumns       

           Matrix(i,j)=str2double(get(handles.edit3,'String')); % считать новый элемент матрицы из окошка для него

           S=mat2str(Matrix);

           set(handles.edit6,'String',S); % вывести матрицу с учетом нового введенного элемента в главное окно интерфейса

           if j<NumberColumns

               b=j+1;

               a=i;

           else

               b=1;

               a=i+1;

           end

           S=sprintf('%g',a);

       set(handles.edit4,'String',S); % вывести следующий номер строки

           S=sprintf('%g',b);

      set(handles.edit5,'String',S); % вывести следующий номер столбца

           j=j+1;

           S=sprintf('%s',' ');

           set(handles.edit3,'String',S); % вывести пробел в окно для нового ввода элемента матрицы (то есть стереть предыдущий элемент в окне)

       end

       i=i+1;

   end 

end

Открытие из файла.

% --- Executes on button press in pushbutton4.

function pushbutton4_Callback(hObject, eventdata, handles)

[f,p]=uigetfile('C:\MATLAB701\work\Book1\Primer_Matr2D.txt','Окно выбора');

OtkudaChitat=strcat(p,f);

f=fopen(OtkudaChitat,'rt');

%chitat is faila matricu StehiometrMatrix(n,m)

n=fscanf(f,'%d',1);

m=fscanf(f,'%d',1);

for i=1:n

   for j=1:m

       Matrix(i,j)=fscanf(f,'%g',1);

   end

end 

fclose(f);

S=mat2str(Matrix);

set(handles.edit6,'String',S);

S=n;

set(handles.edit1,'String',S);

S=m;

set(handles.edit2,'String',S);

end

 


 


ГЛАВА 2. ЗАДАЧИ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: