使用
[res(:).tag] = res(:).name;
或者更简单地说,就像你发现自己一样:
[res.tag] = res.name;
左侧带方括号的语法类似于用于捕获函数返回的几个输出的语法:[out1,out2] = fun(…);见MATLAB special characters.
赋值的右侧应该是另一个以逗号分隔的列表.如果它是单个元素,或者您想手动指定列表,则需要deal:
values = {10, 20};
[res.test] = values{:}; % works. {:} produces a comma-separated list
[res.test] = 10,20; % doesn't work. Use `deal`
[res.test] = deal(10,20); % works
[res.test] = 10; % doesn't work, unless `res` is scalar. Use `deal`
[res.test] = deal(10); % also works. 10 is repeated as needed
您尝试[res.tag] = [res.name]的原因;不起作用的是右侧的[res.name]将逗号分隔列表res.name的结果连接成一个数组,因此它与[res.test] = 10的情况相同;以上.