matlab确定单元格数组是否为行

时间:2012-06-15 07:44:18

标签: matlab cell-array

我有一个数据:

data = 

{1x6 cell}    {1x6 cell}

我想知道数据{2:en​​d}是否是一行,所以我使用了:

stop = 0;
for (k=2:length(data))
    if isrow(data{k})
         stop = 1;
    end
end

但是,函数'isrow'不适用于'cell'类型的参数。

我读到了它,并且有一个功能:'cell2struct':

structArray = cell2struct(cellArray, fields, dim);

但我认为我不能使用它,因为我必须给这个函数提供'fields'和'dim'。

4 个答案:

答案 0 :(得分:1)

尝试以其他方式检查:

  function bIsRow = isrow(x)
      bIsRow = (size(x,2) == numel(x));
  end

答案 1 :(得分:1)

我真的不明白这里有什么问题。这是我在R2010b上得到的:

>> data = {cell(1,6) cell(1,6) cell(3,6)}
data = 
    {1x6 cell}    {1x6 cell}    {3x6 cell}

>> isrow(data{2})
ans =
     1

>> isrow(data{3})
ans =
     0

答案 2 :(得分:0)

尝试

if isrow(cell2mat(data{k}))

答案 3 :(得分:0)

您可以将以下代码用于isrow()

function Y = isrow(X)
%
% ISROW    True for row vectors.
%
%   Y = ISROW(X) returns logical 1 if X is a row vector, 0 otherwise.
%   ISROW returns 1 for scalars also.
%
%    See also: ISCOL.
%

if ndims(X)==2 & size(X,1)==1 & size(X,2)>=1
   Y = logical(1);
else
   Y = logical(0);
end

Source via MATLAB Central