Создание программы с графическим интерфейсом в MATLAB

Автор работы: Пользователь скрыл имя, 30 Ноября 2013 в 12:31, практическая работа

Краткое описание

Цель работы: Изучение особенностей написания программ и процедур в системе MATLAB. Приобретение навыков создание пользовательских приложений в пакете MATLAB.
Задание: Написать функцию, которая находит произведение положительных элементов заданной матрицы расположенных выше побочной диагонали, и подсчитывает число отрицательных элементов в этой матрице. Создать графический интерфейс.

Прикрепленные файлы: 1 файл

Ланбин_Отчет_РГР.doc

— 57.00 Кб (Скачать документ)

Министерство  образования и науки РФ

Новосибирский государственный технический университет

 

 

 

 

 

 

 

 

Расчетно-графическая  работа. 
“Создание программы с графическим интерфейсом в MATLAB”

 

 

 

 

 

 

Факультет: АВТФ

Группа: АВТ-115

Студенты:  Ланбин А.Е.

 

 

 

 

 

Новосибирск, 2012г. 

  • Цель работы:

Изучение особенностей  написания  программ и процедур в системе MATLAB. Приобретение навыков создание пользовательских приложений в пакете MATLAB.

  • Задание:

Вариант 14

Написать функцию, которая находит  произведение положительных элементов заданной матрицы расположенных выше побочной диагонали, и подсчитывает число отрицательных элементов в этой матрице. Создать графический интерфейс.

  • Описание интерфейса:

Для создания приложения были использованы такие элементы как:

Два элемента Edit для ввода матрицы и ее размерности.

Edit1 : String = 3 Tag = edit21

Edit2 : String = 1 -4 23 17 -1 345 -1 4 -5 Tag = edit22

Элементы Text для вывода результатов, также использовались как заголовки для Edit.

Например для Text1:

String = Размер матрицы:  Tag =  text1

Две кнопки Button для расчетов результата, и очистки полей вывода.

Button1 : String = Вычислить Tag = pushbutton1

Button2 : String = Очистить Tag = pushbutton2

  • Алгоритм работы программы:

 

По нажатию на кнопку вычисления происходит считывания значения элементов ввода Edit1  и Edit2

 

n = str2num(get(handles.edit21,'String'));

str=str2num(get(handles.edit22,'String'));

 

Затем значения из вектора str записываются в двумерный массив

 

for k=1:(n*n)

    mas(i,j)=str(k);

    j=j+1;

    if j==(n+1)

        j=1;

        i=i+1;

    end

end

Расчет произведения происходит во вложенном цикле, который последовательно  проходит по всем элементам матрицы  выше побочной диагонали, одновременно проверяя их знак, при соответствии значения перемножаются.

pr=1; %произведение

for i=1:(n-1)

for j=1:(n-i)

        if mas(i,j)>0

            pr=pr*mas(i,j);

        end

Количество отрицательных элементов  высчитывается последовательным прохождение  по всех матрице.

 

for i=1:n

    for j=1:n

        if mas(i,j)<0

            minus=minus+1;

        end

 

Затем рассчитанные значения, записываются в два элемента Text.

 

set(handles.text4,'String',pr);

set(handles.text7,'String',minus);

 

 

  • Пример работы программы:

 



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • Выводы:

 

В проделанной работе я научился использовать пакет MATLAB для создания графических приложений. Писать функции CallBack, и использовать элементы управления такие как кнопки и поля ввода.

  • Приложение(исходный код программы):

 

function varargout = main(varargin)

% MAIN M-file for main.fig

%      MAIN, by itself, creates a new MAIN or raises the existing

%      singleton*.

%

%      H = MAIN returns the handle to a new MAIN or the handle to

%      the existing singleton*.

%

%      MAIN('CALLBACK',hObject,eventData,handles,...) calls the local

%      function named CALLBACK in MAIN.M with the given input arguments.

%

%      MAIN('Property','Value',...) creates a new MAIN or raises the

%      existing singleton*.  Starting from the left, property value pairs are

%      applied to the GUI before main_OpeningFcn gets called.  An

%      unrecognized property name or invalid value makes property application

%      stop.  All inputs are passed to main_OpeningFcn via varargin.

%

%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one

%      instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

 

% Edit the above text to modify the response to help main

 

% Last Modified by GUIDE v2.5 22-Dec-2012 15:06:24

 

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name',       mfilename, ...

                   'NumbetTitle',    'Off', ...

                   'gui_Singleton',  gui_Singleton, ...

                   'gui_OpeningFcn', @main_OpeningFcn, ...

                   'gui_OutputFcn',  @main_OutputFcn, ...

                   'gui_LayoutFcn',  [] , ...

                   'gui_Callback',   []);

if nargin && ischar(varargin{1})

    gui_State.gui_Callback = str2func(varargin{1});

end

 

if nargout

    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

    gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

 

 

% --- Executes just before main is made visible.

function main_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject    handle to figure

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% varargin   command line arguments to main (see VARARGIN)

 

% Choose default command line output for main

handles.output = hObject;

 

% Update handles structure

guidata(hObject, handles);

 

% UIWAIT makes main wait for user response (see UIRESUME)

% uiwait(handles.figure1);

 

 

% --- Outputs from this function are returned to the command line.

function varargout = main_OutputFcn(hObject, eventdata, handles)

% varargout  cell array for returning output args (see VARARGOUT);

% hObject    handle to figure

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

 

% Get default command line output from handles structure

varargout{1} = handles.output;

 

 

 

function edit21_Callback(hObject, eventdata, handles)

% hObject    handle to edit21 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

 

% Hints: get(hObject,'String') returns contents of edit21 as text

%        str2double(get(hObject,'String')) returns contents of edit21 as a double

 

 

% --- Executes during object creation, after setting all properties.

function edit21_CreateFcn(hObject, eventdata, handles)

% hObject    handle to edit21 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    empty - handles not created until after all CreateFcns called

 

% Hint: edit controls usually have a white background on Windows.

%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

    set(hObject,'BackgroundColor','white');

end

 

 

 

function edit22_Callback(hObject, eventdata, handles)

% hObject    handle to edit22 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

 

% Hints: get(hObject,'String') returns contents of edit22 as text

%        str2double(get(hObject,'String')) returns contents of edit22 as a double

 

 

% --- Executes during object creation, after setting all properties.

function edit22_CreateFcn(hObject, eventdata, handles)

% hObject    handle to edit22 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    empty - handles not created until after all CreateFcns called

 

% Hint: edit controls usually have a white background on Windows.

%       See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

    set(hObject,'BackgroundColor','white');

end

 

 

% --- Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles)

% hObject    handle to pushbutton1 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

n = str2num(get(handles.edit21,'String'));

str=str2num(get(handles.edit22,'String'));

 

%mas(1,1)=(str(1));

mastext=[handles.text8,handles.text9,handles.text10,handles.text11;handles.text12,handles.text13,handles.text14,handles.text15;handles.text16,handles.text17,handles.text18,handles.text19;handles.text20,handles.text21,handles.text22,handles.text23];

 

 

 

i=1;

j=1;

for k=1:(n*n)

    mas(i,j)=str(k);

    j=j+1;

    if j==(n+1)

        j=1;

        i=i+1;

    end

end

 

 

 

for i=1:n

    for j=1:n

        set(mastext(i,j),'Visible','on');

        set(mastext(i,j),'String',mas(i,j));

    end

end

 

 

pr=1; %произведение

 

for i=1:(n-1)

    for j=1:(n-i)

        if mas(i,j)>0

            pr=pr*mas(i,j);

        end

    end

end

 

minus=0; %отрицательные элементы

 

for i=1:n

    for j=1:n

        if mas(i,j)<0

            minus=minus+1;

        end

    end

end

 

set(handles.text4,'String',pr);

set(handles.text7,'String',minus);

 

 

% --- Executes on button press in pushbutton2.

function pushbutton2_Callback(hObject, eventdata, handles)

% hObject    handle to pushbutton2 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

 

n = str2num(get(handles.edit21,'String'));

mastext=[handles.text8,handles.text9,handles.text10,handles.text11;handles.text12,handles.text13,handles.text14,handles.text15;handles.text16,handles.text17,handles.text18,handles.text19;handles.text20,handles.text21,handles.text22,handles.text23];

 

for i=1:n

    for j=1:n

        set(mastext(i,j),'Visible','off');

    end

end

 

 

 

 


Информация о работе Создание программы с графическим интерфейсом в MATLAB