我正在尝试使用结构中定义的成员来计算同一结构的另一个成员。特别是我有:
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'这样的成员,我怎么能解决这个问题呢?
答案 0 :(得分:2)
您必须首先定义您正在进行的结构,然后使用其值。可以使用点(.
)访问结构的字段。
要定义您可以使用的c_gamma
和c_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]);
因为在后一种情况下还没有创建字段。