2017-08-01 202 views
0

我正在使用App Designer在MATLAB GUI上工作,雖然也許我的問題類似於指南。 我想要做的是將一個回調(按鈕)的輸出傳遞給另一個。原因是隨時間有效;我希望用戶能夠首先加載文件,然後選擇要繪製的數據列。MATLAB App Designer:將輸出從一個按鈕傳遞到另一個按鈕

我已經嘗試建立全局變量,但似乎沒有工作。

我的項目的目標是加載包含幾十個「列」數據和幾百行「測量」(例如:溫度和溼度隨時間變化)的XML文件。我的想法是,用戶將按下一個按鈕來加載數據,然後選擇要顯示的所需列。

methods (Access = private) 

    % Button pushed function: SelectNewFileButton 
    function SelectNewFileButtonPushed(app, event) 
     [filename, filepath] = uigetfile('..\*.*'); 
     app.FileNameEditField.Value=filename; 
     app.FilePathEditField_2.Value=filepath; 
    end 

    % Button pushed function: LoadDataButton 
    function LoadDataButtonPushed(app, event) 
     % Loads XML data... 
     global xHead; 
     % EM_witsfun1 is a function which takes a file name & directory as an input, and returns the header and data 
     [xHead, xData, toc1]=EM_witsfun1(app.FileNameEditField.Value,app.FilePathEditField_2.Value); 
     app.DataLoadedinsEditField.Value=toc1; % Shows elapsed time after running the above function (just to make sure it works) 
    end 

    % Button pushed function: UpdateButton 
    function UpdateButtonPushed(app, event) 
     app.ChosenChannelNameEditField.Value=xHead{app.ChooseChannelNumberEditField.Value}; 
    end 
end 

錯誤是:

未定義函數或變量xHead

也許有一些東西在我可以在函數內更新的函數之外定義(就像我對文本框所做的那樣),但我不確定什麼是最優雅的方法來做到這一點。

圖片GUI顯示:

Image of GUI display

+0

我相信我解決了我的問題:我不是試圖建立新的全局變量,而是更新了現有GUI對象的元素。例如,通過將單元格數組的元素傳遞到列表框中: app.ListBox1.Items = {'newString1','newString2'}; 因此,整個應用程序都可以訪問ListBox的新元素。我打算用數據做同樣的事情,但我不確定如何在不顯示錶中的所有數據的情況下執行此操作(耗時)。 –

回答

0

我使用的公共屬性,按Mathworks解決我的問題。

+0

嗨!請接受表明問題已解決的答案。更重要的是,儘管鏈接可能回答這個問題,但最好在這裏包含解決方案的主要部分,並提供參考鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 –

+0

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/17025091) – Jehy

相關問題