2013-12-17 57 views
3

我怎樣才能將這些數字放在我的GUI的窗口中?使用手柄將數字導入MATLAB GUI?

我不確定在下面的例子中,在我的用戶定義代碼中放置句柄的位置。我總共有4個數字,看起來與這個例子相似。我希望4個數字顯示在我的GUI窗口中,而不是單獨的窗口中,所以我在.fig文件中創建了4個軸窗口。

此特定圖中的代碼繪製的基於在MyVariable的值是否爲一個1或0黑66個黑白長方形的柵格如果MyVariable爲1,白如果MyVariable是0。我有一個用於我的.fig GUI的文件,一個用於控制GUI的文件,一個用於鏈接到GUI的用戶定義的代碼。

function test = MyScript(handles) 

大量的代碼中的數字爲上面的代碼之間

% Initialize and clear plot window 
figure(2); clf; 

% Plot the west wall array panels depending on whether or not they are 
% shaded or unshaded 
for x = 1:11 
    for y = 1:6 
    if (MyVariable(x,y) == 1) 
    rectangle('position', [x-1, y-1, 1, 1] ,'EdgeColor', 'w', 'facecolor', 'k') 
    else if(MyVariable(x,y) == 0) 
    rectangle('position', [x-1, y-1, 1, 1], 'facecolor', 'w') 
end 
end 
end 
end 

title('West Wall Array',... 
    'FontWeight','bold') 

axis off 

看起來是這樣的: enter image description here

函數定義包含了所有的我的腳本代碼對所有4個地塊因爲我之前沒有將我的腳本分成單獨的函數。

我的GUI腳本代碼包含:

MyScript(handles); 

回答

2

由於DMR最高審計機關,它的necesary設置「CurrentAxes」。例如,如果要將標記名稱'axis1'繪製到座標軸上,則應該簡單地添加:

axes(handles.axes1); 

添加到您的代碼中。以下是包含'axis1'和'axis2'的圖形的簡單示例,使用上面的代碼(已更正)代碼。我不太確定你想在你的GUI本身或一個單獨的數字軸上繪圖。我希望我涵蓋了這兩種情況。

function varargout = Test(varargin) 

% Begin initialization code - DO NOT EDIT 
gui_Singleton = 1; 
gui_State = struct('gui_Name',  mfilename, ... 
        'gui_Singleton', gui_Singleton, ... 
        'gui_OpeningFcn', @Test_OpeningFcn, ... 
        'gui_OutputFcn', @Test_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 Test is made visible. 
function Test_OpeningFcn(hObject, eventdata, handles, varargin) 


% Choose default command line output for Test 
handles.output = hObject; 

% Update handles structure 
guidata(hObject, handles); 

plot(handles.axes2,-2*pi:0.1:2*pi,sin(-2*pi:0.1:2*pi)); 

% Initialize and clear plot window 


MyVariable = ones(11,6); 
MyVariable(1:5,1) = 0; 

axes(handles.axes1); 

for x = 1:11 
    for y = 1:6 
     if (MyVariable(x,y) == 1) 
      rectangle('position', [x-1, y-1, 1, 1] ,'EdgeColor', 'w', 'facecolor', 'k'); 
     elseif(MyVariable(x,y) == 0) 
      rectangle('position', [x-1, y-1, 1, 1], 'facecolor', 'w'); 
     end 
    end 
end 

title('West Wall Array',... 
    'FontWeight','bold') 

figure(2); clf; 

for x = 1:11 
    for y = 1:6 
     if (MyVariable(x,y) == 1) 
      rectangle('position', [x-1, y-1, 1, 1] ,'EdgeColor', 'w', 'facecolor', 'k'); 
     elseif(MyVariable(x,y) == 0) 
      rectangle('position', [x-1, y-1, 1, 1], 'facecolor', 'w'); 
     end 
    end 
end 

title('West Wall Array',... 
    'FontWeight','bold') 

function varargout = Test_OutputFcn(hObject, eventdata, handles) 

varargout{1} = handles.output; 

你的嚮導GUI應該是這樣的: enter image description here

而且你的結果是這樣的: enter image description here

+0

謝謝。這已經解決了我的問題,雖然座標軸值仍然出現在我的圖中3,這是不需要的。 這是我擁有的圖像:https://dl.dropboxusercontent.com/u/104069213/GUI%20example%201.png圖'西牆陣列'正是我想要的格式。標題爲「陣列」的其他圖像在圖像上具有值,並且圖像傾斜。在將它們放入GUI之前,它們看起來並不像這樣。這是他們看起來像單獨的數字,就像'西牆陣列'一樣: https://dl.dropboxusercontent.com/u/104069213/GUI%20example%202.png 有什麼想法? – loco

+0

沒關係。我解決了我的問題。再次感謝。 – loco

2

可以設置軸通過設置數字的「CurrentAxes」屬性繪製成之前每個小區命令。

在GUIDE中,您可以標記給定軸,例如:http://www.mathworks.com/help/matlab/creating_guis/gui-with-multiple-axes-guide.html。然後在您的繪圖代碼中,通過'set'函數和'CurrentAxes'屬性指示應該繪製哪個軸。

一個簡單的例子如下,儘管它不使用指南,只有基本的插曲軸手柄:

% plots in most recent axis by default (ax2) 
fig = figure; 
ax1 = subplot(1,2,1); 
ax2 = subplot(1,2,2); 
plot(rand(1,10)); 

% indicate that you want to plot in ax1 instead 
fig = figure; 
ax1 = subplot(1,2,1); 
ax2 = subplot(1,2,2); 
set(gcf, 'CurrentAxes', ax1); 
plot(rand(1,10)); 
+0

我需要使用指南,因爲我將在後面增加一個下拉菜單等其他特徵。如上所示,我的數字雖然沒有使用繪圖函數。我正在使用矩形函數來生成完整的繪圖,那麼如何使用該函數來實現?另外,由於這個例子不使用GUIDE,我不確定如何將用戶定義文件之間的代碼拆分並將其鏈接到GUI文件,因此我可以將它與句柄一起使用。 – loco

+0

您可以添加下拉菜單,按鈕,複選框等。使用['uicontrol'](http://www.mathworks.com/help/matlab/ref/uicontrol.html)命令。 – craigim