Вам нужно будет проверить размер входа:
x = [1, 2, 3]
% or
x = [1; 2; 3]
new = 0;
% flexible concatenation
y = cat(~(size(x,1) > 1) + 1, new ,x)
Пояснение
d = size(x,1) > 1 % check if column (=1) or row vector (>1)
z = ~(d) + 1 % results in either 1 or 2 for column or row vector
% as input for cat
y = cat(z, new ,x) % concatenate in correct dimension
или с помощью isrow
, как предложено в ответ ThomasIsCoding , но я думаю, что это почти то же самое:
z = isrow(x) + 1;
В любом случае вы должны использовать isvector
чтобы проверить, является ли входной сигнал вектором, а не матрицей. Но на самом деле я бы порекомендовал преобразовать любой вектор ввода, строки или столбца в вектор-столбец с помощью
x = x(:)
, чтобы учесть кодирование внутри вашей основной функции.