Re: [討論] GUI內存值給M檔案function使用已回收

看板MATLAB作者 (Yes Man)時間13年前 (2010/11/21 13:30), 編輯推噓4(400)
留言4則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《Gocoba (Family Guy)》之銘言: 好久沒用 matlab 了.... 發現好多語法跟細節都不同 ~"~ 以下是 2009a 的寫法 : 1) 假設在pushbottom callback fucntion裡是設定 : A = handles.edit1; : B = handles.edit2; : C = A + B; : set(handles.text1,'String',C); A = str2double(get(handles.edit1, 'string')); B = str2double(get(handles.edit2, 'string')); C = A + B; set(handles.text1,'string', C); : 請問我要怎麼把這個C值讀到command line去呢?(存到workspace做參數) : 或是把C值存到已經做好的m file裡去給其他function使用 理論 matlab 中 GUI 的變數應該是不能存到 workspace 原因是因為變數的生存週期是跟著應用程式走(你開啟的 GUI) 當 GUI 關閉時,你在這邊使用的變數也會跟著摧毀 新版 matlab 我就不確定有沒有其他的更改或存取方式 可以把 GUI 變數撈進 workspace 裡 如果你只是單純想把 C 值存起來,然後在其他 function 中使用 你可以使用 setappdata 跟 getappdata setappdata(gcf, '取一個在 gcf 你要的變數名', 你要存的變數); getappdata(gcf, '同上的變數名'); : 目前狀況是我想藉由GUI輸入一組數值 : 讓數值讀進我已做好的function(由其他的pushbottom觸發) 直接在你要觸發的 button callback function 中 把 GUI 設定的數值代入並呼叫你做好的 function 即可 : 2) 如何直接在GUI設定A和B皆為矩陣型態呢? : 例如 A = [1 2;3 4] B = [4 3;2 1] 然後static text會顯示 : C = [5 5;5 5] : edit text裡我都是用str2double(get(hObject, 'String'))的指令 : 請問是要在str2double下手嗎? 可能新版會有更快的方式 目前想到的方式是用 strtok 把每個變數切出來放進矩陣裡 : 3) 如果想把已經寫好的m file裡處理好的數據顯示在GUI上 : 我應該把這個程式寫進pushbottom下還是直接把這個m file的檔名放 : 進去即可?兩個有什麼差別嗎? : 假設這個m file裡面存好了一組矩陣 FPN = [] : 我該如何在gui程式裡面處理這個數據呢? : 煩請各位幫忙解惑 非常感謝 首先你必須要有個 trigger 的方式 譬如說加進 button 的 callback function 在這 function 裡寫 load [mat file] [你要的變數名] 然後再把這變數的資料放到你想放的 GUI object property 裡 譬如說 set(handles.text1,'string', 你的變數名); 你可以將變數通通在 GUI 裡處理或是存進 mat file 後再拿出來 差別是放進 GUI 的話,資料只會暫存在記憶體 程式關掉資料自動會清除 如果你有必要留下資料 1. 就是同樣的資料未來會再使用 2. 計算量很大,不想再重算 3. 實驗的參數不會再更動,資料結果也不會變 那存進 mat file 會是你的好選擇 像我的習慣是假如不會算很久的 我全部都將變數在 GUI 裡處理掉,一來方便二來方便參數變更 如果要回存到 mat file,再從 GUI menu 裡做個儲存功能即可 我猜想你應該把問題弄複雜了 你只是想要把 GUI 上設定的參數用你寫好的 function 處理 處理完以後把資料傳回 GUI 介面對嗎?? 如果是我的猜想,處理流程應該如下: 1. 在 trigger callback function 裡讀入 GUI object property 參數值 呼叫你寫好的 function 把參數代進去 偷懶的話可以順便把 funciton 回傳順便寫好,並設個參數去接 2. 如果有參數要跨 GUI function 的話 可以使用 setappdata 跟 getappdata 把資料偷存在 gcf 裡 希望能幫到你 加油囉!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 76.170.73.150 ※ 編輯: kekul 來自: 76.170.73.150 (11/21 14:01)

11/21 19:44, , 1F
11/21 19:44, 1F

11/22 14:16, , 2F
11/22 14:16, 2F

11/23 01:14, , 3F
詳細的好文~推!
11/23 01:14, 3F

09/19 18:46, , 4F
2017年感謝推~
09/19 18:46, 4F
文章代碼(AID): #1CwAvfjU (MATLAB)
文章代碼(AID): #1CwAvfjU (MATLAB)