Невозможно выполнить присваивание, так как точечная индексация не поддерживается для переменных этого типа - PullRequest
1 голос
/ 17 июня 2019

Когда я запускаю код ниже, я получаю сообщение об ошибке "

Невозможно выполнить присваивание, поскольку индексирование точек не поддерживается для переменных этого типа.

"Есть идеи, как это исправить?

dots.nDots = 100;

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

1 Ответ

3 голосов
/ 17 июня 2019

Линия:

dots.nDots = 100;

создает переменную dots в виде структурного массива с полем nDots. Однако вы перезаписываете переменные точки, когда начинаете цикл for :

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

Однако не ясно, что вы надеетесь достичь с помощью этого цикла. Все, что нужно будет сделать, - это многократно перезаписывать dots.x и dots.y новым набором из 100 случайных значений каждое, в 100 раз больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...