1

假设我有一个从 sql server 返回的名为 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 已关闭,我实际上无法运行它

4

2 回答 2

1

MATLABstruct具有字段,通常使用 a 访问的名称.,这就是你fieldnames得到的:

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

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

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

于 2013-10-03T21:05:59.070 回答
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);

给出:

名字=

'cola'
'colb'
'colc'

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

组织TS =

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
于 2013-10-03T22:36:10.273 回答