2016-06-09 2 views
0

У меня есть большой код Matlab, и теперь я пытаюсь подключить его к графическому интерфейсу. Я создал функциюMatlab GUI. Установите рукоятки кнопок в другом .m файле

function z = interface_master(handles) 

, который первым получает начальные параметры из графического интерфейса редактирования текста, а затем запускает ряд .m файлы с помощью этих параметров, например

n = get(handles.n_value,'String'); 
n = str2num(n); 
assign('base','n',n) 
run('code_1') 
run('code_2') 
... 

В этом I код создать и сохранить несколько цифр. Теперь я хотел бы, чтобы Пользователь мог отображать фигуру по своему выбору в графическом интерфейсе. Допустим, у меня будут 3 разные кнопки (Push1, Push2, Push3) и Пользователь после нажатия кнопки Push1 отобразится Figure_A. Затем, после нажатия Push2, он получит Figure_B, заменяющий Figure_A, и так далее. Могу ли я как-то заставить его работать, просто устанавливая ручки в моей функции interface_master?

Я не хочу загромождать мой interface.m файл и до сих пор мне удалось сделать все остальное (чтение значения, отображение сообщений) в этом дополнительном interface_master файле, только при подключении как через interface_master(handles) в функциях интерфейса обратного вызова. Но теперь я застрял с этими кнопками.

Я бы очень признателен за помощь здесь. Раньше я никогда не делал никакого графического интерфейса.

+0

Я немного запутался о том, что делает ваш код. Показывает ли «n», какая фигура отображается? Есть ли вероятность, что вы можете разместить соответствующие части «code_1» или «code_2»? – Suever

+0

Вы случайно пытаетесь реализовать некоторый шаблон проектирования (например, MVP, MVC) в MATLAB? Как Сьювер, я смущен тем, что вы пытаетесь сделать, и * почему *. Могли бы вы представить диаграмму/блок-схему желаемого поведения ...? –

+0

code_1 и code_2 - довольно большие скрипты Matlab, вычисляющие множество переменных для заданного количества выборок n. Затем code_1 и code_2 сохраняют результаты и сохраняют цифры. Они хорошо работают без GUI. Я пытаюсь подключить графический интерфейс так, чтобы Пользователь определял себе количество выборок. Затем выполняются коды_1 и code_2 для вычисления всех результатов. В конце я хотел бы, чтобы Пользователь мог отображать фигуру по своему выбору в графическом интерфейсе. Цифры уже сгенерированы и сохранены (без отображения) с помощью code_1 и code_2. Может быть, я слишком сложный. Это в основном то, что я пытаюсь сделать. – Agnieszka

ответ

0

Я создал очень упрощенную версию того, что я делаю. В общем случае коды_1 и code_2 намного больше, и интерфейс будет отображать больше сообщений, а code_1 и code_2 - сэкономить около 20 разных цифр. Но то, с чем я борюсь, может быть продемонстрировано простым вычислением полиномов кода.

%% code_1.m 
x = linspace(-1,1) ; 
y = x.^n ; 


%% code_2.m 
f = figure('visible','off'); 
plot(x,y); 
set(f,'Visible','on') 
saveas(f,'power_plot_1','fig') 
delete(f) 
g = figure('visible','off'); 
plot(x,x.^(n+1)); 
set(f,'Visible','on') 
saveas(g,'power_plot_2','fig') 
delete(g) 

%%% master.m 
function z = master(handles) 

n = get(handles.n_value,'String') 
n = str2num(n) ; 
assignin('base','n',n) 

if (n < 1) 
    message = ('small n') ; 
elseif (n>10) 
    message = ('large n') ; 
else 
message=('hello world') ; 

run('code_1') 
run('code_2') 

end 
set(handles.text1,'String',message) 

и вот интерфейс:

https://lh3.googleusercontent.com/-5zoGVwgJhoM/V1qdiyd667I/AAAAAAAACQ0/oaTQHYn13gIuLoSb42Q7N66AV102e-VjQCCo/s912/inter.png