MATLAB Answers

Hi I am having a hard time using the getfield. It says there is an error.

1 view (last 30 days)
Megan Mirkhanian
Megan Mirkhanian on 18 Dec 2019
Commented: Walter Roberson on 19 Dec 2019
The error says to use dynamic field names with structures instead of GETFIELD.
%%
%%% load the latitude and longitude files (FYI, for some reason the data is
%%% flipped so that Lat is on the horizontal axis and Lon is on the
%%% vertical.
latStruct = load('L:\Flow ecology and climate change_ES\FromKelly_HECHMS_models\PostProcess_PrecipData_AlexHall\Matlabcode\LatLons\surface_lat2.mat');
latField = fieldnames(latStruct);
%lat = getfield(latStruct,string(latField(1,1)));
lat = getfield(latStruct,string(latField(1,1))); %#ok<*GFLD>
lonStruct = load('L:\Flow ecology and climate change_ES\FromKelly_HECHMS_models\PostProcess_PrecipData_AlexHall\Matlabcode\LatLons\surface_lon2.mat');
lonField = fieldnames(lonStruct);
lon = getfield(lonStruct,string(lonField(1,1)));

  0 Comments

Sign in to comment.

Answers (1)

Ridwan Alam
Ridwan Alam on 19 Dec 2019
lat = getfield(latStruct,latField{1});

  1 Comment

Walter Roberson
Walter Roberson on 19 Dec 2019
You are using a fairly old version of MATLAB. Anywhere you see string() used in code you will need to rewrite the code. string in your very old version is not compatible with string in modern versions.
Also, after string was introduced in R2016b, it took a couple of releases before it could be used in getfield()

Sign in to comment.

Sign in to answer this question.