如何在其中使用结构的成员?

时间:2018-03-19 17:37:07

标签: matlab struct

我正在尝试使用结构中定义的成员来计算同一结构的另一个成员。特别是我有:

DATI= struct(  'L_x',              1e7,...
               'L_y',              2*pi*1e6,...
               'H',                200,...
               'W',                0.3e-7,...
               'R',                0.6e-3,...
               'c_beta',           0,...            
               'c_gamma',          W*pi/(R*L_y),...
               'c_alpha',          [H*c_beta/R;0]);

这样我就不能使用像'W'或'R'这样的成员,我怎么能解决这个问题呢?

1 个答案:

答案 0 :(得分:2)

您必须首先定义您正在进行的结构,然后使用其值。可以使用点(.)访问结构的字段。

要定义您可以使用的c_gammac_alpha字段:

DATI= struct(  'L_x',              1e7,...
               'L_y',              2*pi*1e6,...
               'H',                200,...
               'W',                0.3e-7,...
               'R',                0.6e-3,...
               'c_beta',           0);

DATI.c_gamma = DATI.W*pi/(DATI.R*DATI.L_y);
DATI.c_alpha = [DATI.H*DATI.c_beta/DATI.R;0];

或使用字符串作为变量字段名称:

DATI= struct(  'L_x',              1e7,...
               'L_y',              2*pi*1e6,...
               'H',                200,...
               'W',                0.3e-7,...
               'R',                0.6e-3,...
               'c_beta',           0);

DATI.c_gamma = DATI.('W')*pi/(DATI.('R')*DATI.('L_y'));
DATI.c_alpha = [DATI.('H')*DATI.('c_beta')/DATI.('R');0];

另一方面,不能使用单个命令执行此操作,如下所示:

DATI= struct(  'L_x',              1e7,...
               'L_y',              2*pi*1e6,...
               'H',                200,...
               'W',                0.3e-7,...
               'R',                0.6e-3,...
               'c_beta',           0,...            
               'c_gamma',          DATI.W*pi/(DATI.R*DATI.L_y),...
               'c_alpha',          [DATI.H*DATI.c_beta/DATI.R;0]);

因为在后一种情况下还没有创建字段。