我有一个处理行向量的函数。我想让它适用于任何类型的输入向量。无论是列还是行。 我认为一种解决方案是保留现有的实现并检查列或行类型的输入向量。 我该如何进行这项检查? iscolumn()或isrow()函数在这里不起作用!
答案 0 :(得分:7)
首先,验证输入是否是向量。 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);
答案 1 :(得分:2)
使用size
检查向量的大小 - 如果它有一列和多行,则您的函数可以使用转置变体调用自身。