2014-02-14 119 views
-2

我有一個字符串數組,其行列式如下。將一個字符串數組轉換爲一個結構體

X ='Xmole(1)=0.0Xmole(2)=1.0rho(1)=2343rho(2)=2343' 

現在我需要一個struct data.Massdensity它看起來應該像這樣

 <data.Massdensity = Xmole(1)=0.0 
          Xmole(2)=1.0 
          rho(1)=2343 
          rho(2)=2343> 

我沒有使用cell2struct這將讓我這樣

data.Massdensity ='Xmole(1)=0.0Xmole(2)=1.0rho(1)=2343rho(2)=2343' 

一個結構是否有任何可能的方式,我可以得到像上面那樣的結構。

我正在讀一文本文件,其內容是這樣的

MassDensity{ 

Xmole(1) = 0.0 
Xmole(2) = 1.0 
rho(1) = 2343 # [kg/m^3] 
rho(2) = 2343 # [kg/m^3] 
    } 

我使用FILEREAD讀入一個字符串這一點。

所以你提出你的數據INTIAL方式做這個

+0

你確定你的電池陣列的樣子嗎?這是一個單獨的字符串,而不是單元格數組,因此您需要了解如何拆分字符串。所以再看看一下... – thewaywewalk

+0

你是如何製作單元陣列的?你可以編輯這個問題來顯示你用來製作X的代碼,因爲現在看起來很奇怪。 –

+0

我的單元格數組包含單個字符串,看起來像是1x1單元格數組。 – Rickjames

回答

0

問題沒有更好的辦法是,有沒有明顯的分隔符。而在原始文件中,您可以選擇(假定)使用行結束符作爲分隔符。

1)作爲單獨的字符串讀入(可能需要在MATLAB中進行拆分或重新組裝),將各個行讀入單元陣列。通過textscan,您可以設置一系列分隔符和其他設置,以充分利用這些選項。

例如:

a = textscan(fid,'%s','Delimiter',... 
{'\n','{','}','#'},'CommentStyle','#','MultipleDelimsAsOne',1); 
a = a{1} 

理想情況下,你想結束了:

a{1} = 'Massdensity' 
a{2} = 'Xmole(1)=0.0' 
... 
a{4} = 'rho(2) = 2343' 

你可能需要做空白的一些修整。

2)創建你的結構,使用動態的字段命名:

data.(a{1})=a(2:end); 

data.MassDensity{1} 

ans = 

Xmole(1) = 0.0 
+0

謝謝你的回答,正是我想要的。你能幫助我如何有效地修整所有的空格。 – Rickjames

+0

只需'strtrim'就可以做到。它適用於單元陣列。 – nkjt

相關問題