2012-08-14 26 views
0

我需要分析與不同參數集相關的幾組數據(每組數據的一組單一參數)。我目前正在努力尋找一種存儲這些參數的好方法,以便在分析特定數據集時可以隨時獲得這些參數。加載數據不同集合的參數文件

我嘗試的第一件事是將它們保存在數據目錄中的腳本文件parameters.m中,並使用run([path_to_data,'/parameters.m'])加載它們。不過,我明白這不是一種好的編碼習慣,它也給我提出了一些範圍問題(我認爲),因爲parameters.m中的更改並不總是反映在我的工作區變量中。 (工作空間變量Clear all之後才改變並重新運行代碼。)

一個乾淨的解決方案是定義在每個數據目錄的功能parameters(),但話又說回來,我需要的目錄添加到搜索路徑。另外我擔心如果我不給函數賦予唯一名稱,我可能會遇到命名空間衝突。另一方面,使用獨特的名稱不太實際...

有沒有更好的解決方案?

+0

參數集和數據集之間的關係是1:1,1:M,M:N,M:1? – 2012-08-14 10:03:57

+0

@HighPerformanceMark如果我正確地理解了它,它就是1:1,即對於每組數據,都有一組固定的參數。我分析了一些物理實驗中的數據,這些數據是在幾次運行中完成的,其中參數隨着每次運行而改變。 – sebhofer 2012-08-14 10:09:31

回答

0

所以定義一個structcell array稱爲parameters並將其存儲在它所屬的我不知道你的參數是什麼樣的數據目錄,但我們可能是這樣的:

parameters.relative_tolerance = 10e-6 
parameters.absolute_tolerance = 10e-6 
parameters.solver_type = 3 
. 
. 
. 

和我可以寫

save('parameter_file', 'parameters') 

甚至

save('parameter_file', '-struct', 'parameters', *fieldnames*) 

聯機幫助顯示如何使用-struct來存儲結構中的字段,因爲應該對您有用的單個變量。

一旦獲得了參數保存,您可以使用load命令加載它們。總結:創建一個名爲parameterssave的變量(很可能是一個結構或單元陣列),它在它所指向的實驗的數據目錄中。然後,您可以使用所有常用的Matlab工具讀取,編寫和調查參數以及數據。我不認爲需要一個比這更復雜的解決方案(儘管你的參數本身可能會變得複雜)。

+0

看來我沒有清楚地說明問題:我有幾個充滿數據的目錄(每個都用於實驗運行)。數據主要是二進制格式(10s到100s MB)的時間追蹤。對於每個目錄,我需要存儲一組不同的參數。所以在我的代碼中,我想1)選擇一個目錄,2)讀取參數,3)讀取數據,4)使用參數來分析數據。事情是,我想將參數存儲在數據目錄中並從那裏讀取它們。 – sebhofer 2012-08-14 10:26:04

+0

我想你是對的,我想的太複雜了。謝謝 – sebhofer 2012-08-14 14:44:55