Функция Matlab и возвращаемые значения в цикле - PullRequest
0 голосов
/ 21 февраля 2012

Если я определю функцию, подобную этой

function [x, y] = findXY(B)
   [by, bx] = size(B);
   x = zeros(by,bx);
   y = zeros(by,bx);
   for i=1:10
       x(i) = i;
       y(i) = i; 
   end
end

Я получаю следующую ошибку

Конструктор для класса 'findXY' должен возвращать только одно выходное значение.

Почему это происходит? Я не могу использовать возвращаемые значения в цикле? Я не нашел ничего подобного во время поиска в Google.

Ответы [ 3 ]

1 голос
/ 21 февраля 2012

Я пробовал:

[x, y] = findXY(ones(10,10))

и проблем нет. Не могли бы вы дать более подробное объяснение о том, где и как вы его используете?

0 голосов
/ 29 февраля 2012

Я отвечу на мой вопрос. Проблема была немного странной. Я просто перезапустил Matlab, и все заработало, как и ожидалось. Так что, если у вас возникли проблемы, и вы не можете найти то, что идет не так, вы должны попробовать снова. Это может сработать.

0 голосов
/ 21 февраля 2012

Вероятно, функция считается конструктором класса - может, она находится в каталоге с именем @TestXY?

И в этом случае вам разрешено возвращать только один объект.

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

Что-то вроде

function xy = findXY(B)
   [by, bx] = size(B);
   x = zeros(by,bx);
   y = zeros(by,bx);
   for i=1:10
       x(i) = i;
       y(i) = i; 
   end
   xy = {x y};
end

Но если функция не является конструктором, ваш код вполне допустим.

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