将字符串数组转换为结构

时间:2014-02-14 11:23:49

标签: matlab struct

我有一个字符串数组,其中包含行的内容。

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将其读入一个字符串。

所以更好的方法是这样做

1 个答案:

答案 0 :(得分: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