2016-11-14 24 views
0

我有1個字段的matlab數據1x617 stuct,每行有4個字段的1x1結構。我如何提取數據以獲得617數據的第4個字段,第4個字段是nx1的兩倍。由於在MATLAB中提取結構文件的第四個字段

+1

這是很難理解在所有結構你可以嘗試寫作樹/文件夾結構嗎?這甚至可以幫助你更好地理解問題。 – mpaskov

+0

,我有數據爲 'diffAnalysisRes1' 與1場1x617結構中,每一行是 'diffAnalysisRes1(1).fullDim' 到 'diffAnalysisRes1(617).fullDim' 1x1struct與4個字段。我想收集第4個字段的好名字是'diffAnalysisRes1(1).fullDim.normDiffCoef'到'diffAnalysisRes1(617).fullDim.normDiffCoef'。我希望有一個收集所有的617個數據由於第四場命令 –

回答

0

根據您的變量結構,可有時通過簡單地索引引用它解決。然而,要收集結構變量的數組中的一個特定字段數據的情況下,我會建議Matlab的FileExchange

這裏使用structval是鏈接:

Struct 2 array or cell for desiginated fieldname

假設您的變量看起來像這樣

for idx = 1:617 
    b.a = ones(1,1)*idx; 
    b.b = ones(2,1)*idx; 
    b.c = ones(3,1)*idx; 
    b.d = ones(4,1)*idx; 
    s(1,idx).a = b; 
end 

上面的代碼建立一個1x617 stuct用1場,並且每行具有4個字段的1x1結構。在這裏我假設每行中第4個字段的名稱是相同的。

現在使用structval

r = structval(s,'d'); 

結果是1x617單元陣列。如果你碰巧各項指標(如NX1陣列)在有該字段相同的大小,然後用

r = structval(s,'d','collapse',true); 

返回一個nx617陣列

+0

嗨史蒂芬,我已經試過MSD = stuctval(diffAnalysisRes1,diffAnalysisRes1.fullDim.normDiffCoef) 但未定義matlab的函數或變量「structval」。我的數據是1x617結構1字段(文件名是「diffAnalysisRes1」)每行都有1x1結構與4個字段我想收集617(文件名「diffAnalysis1(1).fullDim.normDiffCoef」的所有第四個數據到「diffAnalysis1( 617).fullDim.normDiffCoef「 –

+0

'structval'不是一個內置函數,它是Matlab的File Exchange上的一個免費的分佈式函數,您必須首先從文件exchagne下載'structval'並將其放在工作目錄中。你的第二個參數傳遞給函數必須是一個字符串變量(見我的例子)。所以它可能看起來像** structval(diffAnalysisRes1,「normDiffCoef」)** –

+0

太感謝你了它的工作原理 –

相關問題