在matlab中检查行或列向量

在matlab中检查行或列向量,matlab,Matlab,我有一个处理行向量的函数。我想让它对任何类型的输入向量都通用。无论是列还是行。 我认为一种解决方案是保留现有的实现,并检查列或行类型的输入向量。 如何执行此检查? iscolumn()或isrow()函数在这里不起作用 使用size检查向量的大小-如果它有一列和多行,你的函数可以使用转置变量调用自己。使用size检查向量的大小-如果它有一列和多行,你的函数可以使用转置变量调用自己。首先,验证输入是否为向量。isvector可以在这里提供帮助。或者,使用大小,或者各种技巧中的任何一种 第二,将向量

我有一个处理行向量的函数。我想让它对任何类型的输入向量都通用。无论是列还是行。 我认为一种解决方案是保留现有的实现,并检查列或行类型的输入向量。 如何执行此检查?
iscolumn()或isrow()函数在这里不起作用

使用
size
检查向量的大小-如果它有一列和多行,你的函数可以使用转置变量调用自己。

使用
size
检查向量的大小-如果它有一列和多行,你的函数可以使用转置变量调用自己。

首先,验证输入是否为向量。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);

首先,验证输入是否为向量。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);

为什么
isrow()
iscolumn()
不起作用?为什么
isrow()
iscolumn()
不起作用?此外,如果OP不愿意将其代码从处理行向量更改为列向量,他可以执行
vec=vec(:)并使用其函数而不进行修改。此外,如果OP不愿意将其代码从处理行向量更改为列向量,他可以执行
vec=vec(:)并使用其功能,无需修改。