matlab中的fieldnames如何工作

时间:2013-10-03 21:00:31

标签: matlab

假设我有从sql server返回的表calld temp 看起来像

date    column a    column b    column c
.
.
.


names               = fieldnames(temp);
names               = names(2:end);
cells               = struct2cell(temp);    
orgTS               = cell2mat(cells(2:end)');
effectiveDate       = temp.date

任何人都能解释一下上面做了什么吗?它很难测试,因为sql server已经关闭,我实际上无法运行这个

2 个答案:

答案 0 :(得分:1)

MATLAB struct有字段,名称通常使用.访问,这就是fieldnames得到的内容:

  

fieldnames获取结构字段名称或对象属性。

     

NAMES = fieldnames(S)返回包含的字符串的单元格数组       结构S中字段的名称。

如上所述,您的names变量将是字符串的单元格。您的代码获取字段2:end,因此看起来像{'column a','column b','column c'}cell2mat(cells(2:end)');行正在获取这些标题下的数据。

答案 1 :(得分:1)

您可能有兴趣构建虚假数据库,直到服务器启动。这是一些代码及其相关结果。

您可以通过在工作区浏览器中双击每个变量来键入变量名称来评估命令窗口中每个变量的内容,或者在编辑器窗口中通过将鼠标指向每个变量来评估每个变量的内容(您必须设置首选项,编辑器,显示,在编辑模式下启用数据提示)

%fake database
field1 = 'date';  value1 = datestr(repmat(now, 5,1));
field2 = 'cola';  value2 = rand(5,1);
field3 = 'colb';  value3 = zeros(5,1);
field4 = 'colc';  value4 = ones(5,1);

%create a temp structure
temp = struct(field1,value1,field2,value2,field3,value3,field4,value4);

以下代码

names               = fieldnames(temp);
names               = names(2:end);

给出:

  

names =

'cola'
'colb'
'colc'

cells               = struct2cell(temp);    
orgTS               = cell2mat(cells(2:end)');

给出

  

orgTS =

0.7866         0    1.0000
0.5043         0    1.0000
0.4850         0    1.0000
0.8388         0    1.0000
0.0859         0    1.0000

effectiveDate       = temp.date

给出

effectiveDate =

04-Oct-2013 00:24:38
04-Oct-2013 00:24:38
04-Oct-2013 00:24:38
04-Oct-2013 00:24:38
04-Oct-2013 00:24:38