我正在使用Matlab API,将数据从专有格式加载到一系列结构中。以下是加载文件后数据集的示例:
>>fieldnames(data(1))
ans =
'Grid_Point_ID' 'Grid_Point_Latitude' 'Grid_Point_Longitude' 'Grid_Point_Altitude' 'Grid_Point_Mask' 'BT_Data'
>> data(1).BT_Data
ans =
BT_Data: [1x66 struct]
>> fieldnames(data(1).BT_Data(1))
ans =
'Flags' 'BT_Value_Real' 'BT_Value_Imag' 'Pixel_Radiometric_Accuracy' 'Incidence_Angle' 'Azimuth_Angle' 'Faraday_Rotation_Angle' 'Geometric_Rotation_Angle' 'Snapshot_ID_of_Pixel' 'Footprint_Axis1' 'Footprint_Axis2'
我希望能循环遍历所有的data(i).BT_Data(j)
。我已经成功获取了data
的长度,但是我无法获取BT_Data
的大小/长度(每个data(i)
都不同):
我的期望结果是>> length(data(1).BT_Data)
ans =
1
>> size(data(1).BT_Data)
ans =
1 1
ans=66
(或者对于size()
的等效数组)。我对数据结构格式并不十分熟悉,这可能是我遇到困难的原因之一。但是
length(data)
运行良好,所以我很困惑为什么它不能在BT_Data
上工作(我也尝试过BT_Data(:)
)。我能找到的最相关的先前答案是1757250,但我无法让它起作用(我认为它不适用于此)。感谢您提供的任何见解。
------编辑------
以下是更多关于如何使用API的见解:
>> system('ln -sf /opt/rwapi-matlab/lib/rwapi/smos/config/xml_rw_api.usr_conf.xml .');
setenv('XML_RW_API_HOME','/opt/rwapi-matlab/lib/rwapi');
path(path,'/opt/rwapi-matlab');>> prod = RWAPI.product('SM_OPEB_MIR_SCLF1C_20110202T013659_20110202T014642_346_060_1')
Array SMOS Matlab Interface version 1.4
(c) 2010 Array Systems Computing Inc. of Canada (http://www.array.ca)
Distribution or modification of this software requires written permission from Arrayprod =
RWAPI.product handle Package: RWAPI Properties: filename: 'SM_OPEB_MIR_SCLF1C_20110202T013659_20110202T014642_346_060_1' header: [1x1 struct] xml_datablock: []
Methods, Events, Superclasses
>> data = prod.dataset(2)
data =
RWAPI.dataset handle with no properties. Package: RWAPI
Methods, Events, Superclasses
>> data(1)
ans =
Grid_Point_ID: 251721 Grid_Point_Latitude: 25.5000 Grid_Point_Longitude: -102.2590 Grid_Point_Altitude: 1.4714e+03 Grid_Point_Mask: 2 BT_Data: [1x66 struct]
>> data(1).BT_Data
ans =
BT_Data: [1x66 struct]
>> data(1).BT_Data(1)
ans =
Flags: 6229 BT_Value_Real: 262.5275 BT_Value_Imag: 0 Pixel_Radiometric_Accuracy: 6160 Incidence_Angle: 31966 Azimuth_Angle: 10299 Faraday_Rotation_Angle: 65277 Geometric_Rotation_Angle: 58605 Snapshot_ID_of_Pixel: 65752530 Footprint_Axis1: 19649 Footprint_Axis2: 14625
>> whos
Name Size Bytes Class Attributesans 1x1 1 logical
data 1x19091 112 RWAPI.dataset
prod 1x2 112 RWAPI.product
data(1).BT_Data(3)
这样的引用链时,所有步骤 -“(1)”,“.BT_Data”和“(3)”-都会传递给数据的subsref()方法,并且可以自由地处理或错误处理它们。通过在中间变量中捕获较短引用的结果,您可以获得一个结构体,并调用正常的索引和length()函数。 - Andrew Janke