How do I ascribe a variable to a cell?

13 次查看(过去 30 天)
Hi,
First of all thanks for reading this and trying to help :)
I am struggling with "attaching" my script to functions written by (many) others.
For that I need to take data out of a text file. In the function (not mine) the data later gets accessed using the command: soilstructure(1).thickness
I have tried with a table and a cell array and attributed the name 'thickness' to the last column, but it wont accept it as index, at least not using the above command... The error message reads: Struct contents reference from a non-struct array object.
Here is what I have so far:
layer = readtable('soil.txt',...
'Delimiter',' ','ReadVariableNames',false);
soilstructure = table2cell(layer,...
'VariableNames',{'type' 'radius' 'G' 'nu' 'rho' 'damping' 'thickness'});
x = soilstructure(1).thickness %why can't it access the data???
The table looks as follows:
soilstructure =
4×7 cell array
'L' [0] [6.8322e+06] [0.4900] [1840] [0.0500] [ 15]
'L' [0] [6.9898e+06] [0.4900] [1840] [0.0500] [ 15]
'L' [0] [2.5479e+07] [0.4900] [1840] [0.0500] [ 85]
'H' [0] [3.3425e+07] [0.4900] [1840] [0.0500] [NaN]
Thank you so much for your help
Chris
  2 个评论
Image Analyst
Image Analyst 2018-12-14
You forgot to attach 'soil.txt'. Please attach it for the best help.
Christian Huber
Christian Huber 2018-12-14
Thank you for your time. I attached it. It is just an example file though the real files are much longer...

请先登录,再进行评论。

采纳的回答

madhan ravi
madhan ravi 2018-12-14
编辑:madhan ravi 2018-12-14
The proper way to access it would be( see Accessing cell array for better understanding):
x = soilstructure{:,7} % but I don’t see your point of converting it to a cell from table but anyhow..
But if you want it to be treated as the way it was this is how I would do it:
remove soilstructure and replace it with (the reason for your error was it was a cell and you were treating it as a struct) the below , treats the data as a table as it was imported as a table
layer.Properties.VariableNames={'type'.... rest the same
layer.thickness % this will access the thickness column
  8 个评论
Christian Huber
Christian Huber 2018-12-14
It is very troubeling though since the program in it's entirety (we lost the input script and a few functions) apparently worked before. I guess I will have to change the parts that treat the struct as a cell and solve the issue that way. Can't seem to understand how it worked before though...
Again many thanks for you help Madhan!
Have a great day
Chris
madhan ravi
madhan ravi 2018-12-14
编辑:madhan ravi 2018-12-14
You're welcome Chris , I suggest you to contact the person who coded the script so that you know what he/she mean by this.

请先登录,再进行评论。

更多回答(1 个)

Mark Sherstan
Mark Sherstan 2018-12-14
编辑:Mark Sherstan 2018-12-14
It is a cell array not a structure. Retrieve the information as follows:
x = soilstructure{1,7}

类别

Help CenterFile Exchange 中查找有关 Cell Arrays 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by