簡體   English   中英

在MATLAB GUI中計算函數后隱藏工作區中的特定變量

[英]Hiding specific variables in workspace after function calculations in MATLAB GUI

我在Matlab中使用GUI創建一些矩陣。 我有一個帶有4個復選框功能的面板,如下所示:

function checkbox1_Callback(hObject, eventdata, handles)

假設每個復選框都會計算那些矩陣的高度,質量,密度和冪 當我分別檢查每個矩陣時,它正確地評估了所請求的矩陣, 但是我必須按它們的順序對其進行檢查,因為每個矩陣的結果都取決於先前的矩陣。 通過在每個函數中添加以前代碼的代碼,我已經解決了這個問題。 當我計算密度時, 工作區窗口具有密度以及高度和質量作為變量。 我希望在密度函數中使用一個命令,在計算之后,它將僅在密度矩陣中顯示在工作區中 我用了以下兩個

clearvars ('-except', 'density')

clear height mass 

但似乎當我運行它時,它不起作用,原因是它將所有變量保留在工作區中但未出現錯誤。 當我在命令窗口中運行它時,它可以工作,但我想使其在函數中運行。 我該如何實現?

對於您的clearvars問題,這是因為該函數在設計上僅在被調用的范圍內執行請求的清除。 總的來說,弄亂工作區變量不是一個好主意(您有更好的選擇,例如將數據存儲在GUI句柄中,並在完成后清除它們)...根據您的示例,以下代碼片段向您展示了如何實現您的目標:

function myFunction()
    % perform some calcunations...
    evalin('base','clearvars(''-except'',''density'')');
end

evalin函數允許在特定工作空間(在這種情況下,基本的Matlab工作空間)內求值特定表達式(在這種情況下,是clearvars調用)。 但是我建議您仔細調整它的veeeeery ,否則風險是要處置其他非常重要的變量(我正在示意性地考慮那些用於管理當前GUI數據和處理程序的變量)。

對於當前的GUI設計,我建議您重新考慮一下。 首先,您永遠不應更改常見且眾所周知的控件的行為:單擊復選框時,我預計不會開始10分鍾的計算; 我希望當我按下按鈕時。 最重要的是,復選框非常適合表達獨立的選擇,而不是順序的選擇...因此,請使用下拉組合框:

Which variable do you want to calculate?
   > Height
   > Mass
   > Density
   > Power

用戶在下拉窗口中選擇一個值,然后按下按鈕以開始計算。 然后將一次性完成計算,並且您的代碼將通過檢查組合框值來知道何時停止。

暫無
暫無

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

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