矩阵“v(i)”和单元阵列“v {i}”的统一元素访问

时间:2013-11-14 13:16:34

标签: matlab indexing

我有一个可以处理矩阵或单元格数组的函数。为了获得底层元素,我需要访问像v(i)这样的矩阵元素和像v{i}这样的单元格数组元素。如果我访问像v(i)这样的单元格数组,我将获得一个包含元素的1x1单元格,而不是元素本身。

是否有统一的方法来访问矩阵和单元格数组中的元素?现在我必须使用手写功能:

function elem = get_element(array, i)
  if iscell(array)
    elem = array{i};
  else
    elem = array(i);
  end
end

注意:性能不是问题。

2 个答案:

答案 0 :(得分:2)

为什么不将所有输入转换为单元格数组,然后只使用{}访问权限?

function myFunctionThatGetsMatAndCell( inp )
if ~iscell( inp )
   inp = num2cell( inp );
end
% continue here with only {} access...
%...

答案 1 :(得分:2)

或者,反过来说:

function myFunctionThatGetsMatAndCell(inp)
    if iscell(inp)
       inp = [inp{:}]; end

    % continue here with only () access...
    %...