在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在MATLAB中使用结构体数组时,有时会报错” ??? Subscripted assignment between dissimilar structures.”。下面来看两种常见的情况: 1. 向结构体数组中,添加不同结构的元素时: 假如你有两套联系方式。一套是完整的联系方式包括Phone,Email,QQ。 Contact1.Phone='8008800'; 再把Contact1和Contact2加到Contacts这个结构体数组中。先加Contact1, Contacts(1)=Contact1;
再加Contact2, Contacts(2)=Contact2;
这时候就会报错“??? Subscripted assignment between dissimilar structures.”。 Contact1.Phone='8008800'; 这里Contact1和Contact2有相同的域名,但是域名顺序并不同,同样会报错。 Contact1.Phone='8008800'; 当然你也可以省去中间变量,这样写: Contacts(1).Phone='8008800'; 这里未对Contacts(2)的Email和QQ赋值,是可以的,MATLAB会对未赋值的域填入空阵列(即[])。
现在假设你的两套联系方式都是完整的。那么可以建立一个1*2的结构体数组Contacts: Contacts(1).Phone='8008800'; 过了几天,你的QQ987654321被盗了,那么你想把第两套联系方式的QQ部分删除,以免误人子弟。你这样做: Contacts(2).QQ=[];
又过了几天,倒霉的你QQ123456789又被盗了,你很郁闷,不过还要把第一套联系方式的QQ部分删除。你可以这样做: Contacts(1).QQ=[];
也许你会说:“两个QQ都不能用了,那Contacts 里还留着QQ域有什么用?删掉算了!“。怎么删呢?刚才不是说不能删吗? Contacts=rmfield(Contacts,'QQ'); 这样的操作,是同时删除了Contacts(1)和Contacts(2)的QQ域。如此就不违背“结构体数组要求它包含的每个结构体都必须有相同的域名以及域名顺序”这一原则了。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论