Проверить вектор строки или столбца в Matlab - PullRequest
1 голос
/ 29 апреля 2011

У меня есть функция, которая обрабатывает вектор строки. Я хочу сделать это универсальным для любого типа входного вектора. Будь то столбец или строка. Я решил, что одним из решений является сохранение существующей реализации и проверка входного вектора для типа столбца или строки. Как я могу выполнить эту проверку? Функции iscolumn () или isrow () здесь не работают!

Ответы [ 2 ]

7 голосов
/ 29 апреля 2011

Сначала убедитесь, что вход является вектором. isvector может помочь здесь. Или используйте размер или любой из множества различных артефактов.

Во-вторых, преобразуйте ваш вектор в вектор-столбец.

vec = vec(:);

В-третьих, напишите свой код, чтобы всегда ожидать вектор столбца, так как vec (:) делает это.

Наконец, сохраните исходную форму вашего вектора и измените любой выходной вектор, который, как ожидается, будет иметь ту же форму, что и входной. Итак, ваш окончательный код должен выглядеть примерно так ...

% test for errors
if ~isvector(vec)
  error('The sky is falling')
end

% convert to column form always
vecshape = size(vec);

% process the vector
outputvec = ... % do stuff here

% reshape the output to be the same shape as the input
outputvec = reshape(outputvec,vecshape);
2 голосов
/ 29 апреля 2011

Проверьте размер вектора с помощью size - если у него один столбец и много строк, ваша функция может вызывать себя с помощью транспонированного варианта.

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