2013-07-24 49 views
0

我試圖保存一個結構,從Matlab工作區中調用'Sum'。結構(1x1)在函數內部創建。 我寫了一個小腳本:如果結構存在於基本工作區中,將其保存

SumCheck = exist('Sum') 
    if SumCheck == 1; 
     save('SummaryTest','Sum') 
    end 

這個工程是我在工作區中運行 - 文件「SummaryTest」在工作目錄中創建。 當我嘗試在我的GUI腳本中運行這個結構'Sum'出現在工作區中,但測試文件從來沒有保存出來,我得到沒有錯誤消息.... 有沒有人有任何想法,我可以救出這個結構作爲一個文件? 在此先感謝您的任何建議。

+0

使用'與特定類型exist':'存在(「薩姆」,「變種」)'來檢查一個變量,並跳過各種試驗現有的文件/函數/目錄等 – Shai

+0

@ Shai謝謝謝,我沒有問題得到這個變量的工作,只有這個d $ ^%^ d結構!感謝您的輸入! – richyo1000

+0

你是什麼意思?結構只是一個像矩陣或單元陣列這樣的變量。 –

回答

1

在GUI中運行時,代碼可能會在GUI回調函數工作區中檢查Sum,而不是基工作區。由於找不到它(Sum位於基礎工作區中),因此SumCheckfalse,因此save命令未得到執行。

+0

謝謝!我擔心這可能實際上是我的問題的正確答案!我想這可能只是我放置保存腳本的幾行內容的問題。感謝您的輸入! – richyo1000

2

你可能需要使用evalin()

,你的GUI正在執行不具有可變在它的範圍,但它聽起來就像你已經明確地創建了SummaryTest結構基礎工作區中的回調,或也許在GUI之外手動創建它。

evalin()允許您指定執行了「EVAL」裏......例如,你可以

evalin('base', 'save(''SummaryTest'', ''Sum''') 

我的語法是有點生疏所以看看evalin的文檔。注意「基地」指的是基工作區

HTH

+0

感謝janh,結構被有效地發送到工作區使用:Sum = evalin('base','Sum');只要我將一個文件加載到我的GUI中,該結構就會存在,並且可以使用我在問題中編寫的腳本將其保存。問題是,只有當我將該腳本輸入到工作區中時,這似乎才起作用,而不是當我將它添加到GUI功能腳本.....感謝您的建議,但是您的語法比我的更好,我會看看它,看看我能否得到它的工作。 – richyo1000