我有一个字符串数组,其中包含行的内容。
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将其读入一个字符串。
所以更好的方法是这样做
答案 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