我有一个不完全有效的脚本:
inputfield = input('您希望看到哪个字段:','s')
if isfield(package,inputfield)
fprintf('The value of the %s field is: %c\n',inputfield,...
eval(['package.' inputfield]))
否则 fprintf('错误:%s无效字段\ n',输入字段)
端
首先我在matlab中定义一个结构,然后在结构上使用脚本:
包=结构( 'ITEM_NO',123, '成本',19.99, '价格',39.95, '代码', 'G')
package =
item_no: 123
cost: 19.9900
price: 39.9500
code: 'g'
structurevalue 您希望看到哪个字段:费用
inputfield =
成本
成本字段的值为:1.999000e + 001
structurevalue 您希望看到哪个字段:item_no
inputfield =
ITEM_NO
item_no字段的值为:{
为什么它无法读取item_no的值?
答案 0 :(得分:1)
尝试:
fprintf('The value of the %s field is: %s\n',inputfield,...
num2str(package.(inputfield)))
您的版本存在两个问题。
%c
字符串中的fprintf
字段。当小数进入时,它被解释为一个数字并以完全精度显示,这就是19.99显示为1.999000e + 001的原因。但是当一个整数进入时,它被解释为一个字符,这就是123显示为'{'(ASCII字符123)的原因。使用num2str
将数字转换为字符串以供显示。另外,使用%s
表示任意长度的字符串,而不是字符%c
。eval
并不是一个好主意。在这种情况下,使用inputfield
作为package
的{{3}}会更方便。