遍历单列数组查找空数组[]报错:Invalid Data Type Specified
问题原因分析
- 你误把**空数值数组
[]**当成了字符串"[]"来匹配,但names_en里的目标元素实际是空数组,并非字符串形式的"[]",直接用==比较不同类型的数据就会触发类型错误。 - 另外,Matlab中处理元胞数组元素的比较,尤其是空数组的判断,不能直接用普通等式比较,得用专门的函数。
解决方案
针对两种目标情况分别处理:
情况1:查找字符串形式的"[]"
如果names_en元胞里确实存的是字符串"[]",用strcmp函数替代==(==用于数组逐位比较,元胞字符串比较推荐用strcmp):
for x = 1:n if strcmp(names_en{1,x}, "[]") display(new_block_name_enable{x,1}); end end
情况2:查找空数值数组[]
如果目标是匹配空的数值数组,用isempty函数判断元素是否为空:
for x = 1:n if isempty(names_en{1,x}) display(new_block_name_enable{x,1}); end end
额外优化:同时匹配两种情况
如果需要同时查找空数组和字符串"[]",可以把两个条件用逻辑或||组合:
for x = 1:n current_elem = names_en{1,x}; if isempty(current_elem) || strcmp(current_elem, "[]") display(new_block_name_enable{x,1}); end end
内容的提问来源于stack exchange,提问作者george12
相关产品推荐
相关产品推荐

