簡體   English   中英

Matlab GUIDE中的For循環

[英]For Loop within Matlab GUIDE

我有Matlab GUI,它使用執行某些代碼的按鈕。 所有這些都有效,除了當代碼到達for循環時,執行似乎沒有輸入該代碼。

1)任何想法如何在Matlab GUIDE代碼框架內實現for循環?
2)有沒有一種方法可以使用斷點來調試GUI代碼(只有我可以通過'disp'語句進行調試),就像運行GUI時那樣,可以刪除斷點。

閱讀解決方案后,我發現
(1)之所以發生是因為for循環索引沒有隨着我建立索引的數組的長度而改變。 我在代碼中對此進行了解釋。
(2)不好,我在運行GUI之前設置了斷點,反之,它可以正常工作。

% Opening func
function Regression_OpeningFcn(hObject, ~, handles, varargin)
NoiseMin = -12;
NoiseMax = 10;
NoiseRes = 2;
handles.noiseMin = NoiseMin;
handles.noiseMax = NoiseMax;
handles.noiseRes = NoiseRes;

%**this executed when value changed in edit text box***

function noiseMinDbEditText_Callback(~, ~, handles)
handles.noiseMin = str2num(get(handles.noiseMinDbEditText,'String'));

% When GUI is running, following shows change from -12 sucessfully 
disp(strcat('Noise Min = ',num2str(handles.noiseMin)));

function noiseMinDbEditText_CreateFcn(hObject, ~, ~) 
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 
set(hObject,'BackgroundColor','white');
end

 %Similar code for noiseMax and noiseRes(not shown here)  

`% Here, code enters the Pushbutton callback

function StartRegressionPushButton_Callback(~, ~, handles)
snr_res = handles.noiseRes;
% here, snr_vecs still shows [-12 2 10]
snr_vecs = [handles.noiseMin:handles.noiseRes:handles.noiseMax];

因此,基本上,當GUI運行時,在與min,max和res snr變量相對應的文本框中輸入和更改值會顯示更改,但是一旦我進入按鈕對話框,更改的值(在全局變量“句柄”)沒有顯示,因為我在此處的代碼中斷了。
有什么幫助嗎? [for循環問題出現在我基於snr_vecs數組建立索引時,它沒有發生變化,因此for循環正在執行,但並非如此。]
塞迪

使用Matlab指南

指南基本上只是創建無花果的工具。 文件。 您所能做的所有事情,都可以通過編程來完成。 手動創建ui元素就像使用指南一樣容易(實際上,我更喜歡以編程方式創建gui元素,因為我認為指南的編碼非常差)...

每個向導元素都有其回調,這些回調必須在某個地方編碼,通常(我認為是100%),無花果文件與.m文件具有相同的名稱。 找到相應的.m -file並轉至您所感興趣的回調。您可以在其中放置斷點,就像在其他任何代碼段中一樣容易。

注意:您甚至可以更改代碼,而無需重新打開fig文件!

對於循環或在常規代碼中有效的任何事物,都適用於ui元素代碼。

句柄未更新的原因是在函數回調末尾缺少以下語句,該變量的變量需要在其他回調中使用。

guidata(hObject,handles);

我修復了它,並且效果很好。

塞迪

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM