在matlab中检查行或列向量

use*_*218 1 matlab

我有一个处理行向量的函数.我想让它适用于任何类型的输入向量.无论是列还是行.我认为一种解决方案是保留现有的实现并检查列或行类型的输入向量.我该如何进行这项检查?iscolumn()或isrow()函数在这里不起作用!

小智 7

首先,验证输入是否是向量.isvector可以在这里提供帮助.或者,使用尺寸或任何多种不同的工艺.

其次,将矢量转换为列矢量.

vec = vec(:);
Run Code Online (Sandbox Code Playgroud)

第三,编写代码以始终期望列向量,因为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);
Run Code Online (Sandbox Code Playgroud)

  • 此外,如果OP不愿意将其代码从处理行向量更改为列向量,他可以执行`vec = vec(:).';`并使用他的函数而无需修改. (3认同)