无法执行分配,因为此类型的变量不支持点索引

时间:2019-06-17 14:27:27

标签: matlab for-loop indexing struct

运行下面的代码时,出现错误“

  

无法执行赋值,因为这种类型的变量不支持点索引。

“关于如何解决它的任何想法?

dots.nDots = 100;

for dots = 1:dots.nDots
    dots.x = (rand(1,dots.nDots));   
    dots.y = (rand(1,dots.nDots));
end

1 个答案:

答案 0 :(得分:3)

该行:

dots.nDots = 100;

将变量dots创建为具有字段nDots的{​​{3}}。但是,您在开始structure array时会覆盖可变点:

for dots = 1:dots.nDots

这时,变量dots变为整数值。然后,当您尝试访问字段nDots时,会看到错误消息,因为dots不再是具有该字段的结构。

如果仅重命名循环变量,就不会再出现该错误:

dots.nDots = 100;

for iDot = 1:dots.nDots
  dots.x = (rand(1, dots.nDots));   
  dots.y = (rand(1, dots.nDots));
end

但是,不清楚您希望通过此循环完成什么。所有这些操作将用一组新的100个随机值重复覆盖dots.xdots.y,每次重复100次。