找到矩阵的大小,而不使用MATLAB中的`size`

Ste*_*fin 5 size matlab matrix

假设我想找到一个矩阵的大小,但不能使用任何功能,如size,numellength.有没有任何巧妙的方法来做到这一点?我可以想到使用循环的几个版本,例如下面的循环,但是没有循环可以做到这一点吗?

function sz = find_size(m)
sz = [0, 0]
   for ii = m'    %' or m(1,:) (probably faster)
      sz(1) = sz(1) + 1;
   end

   for ii = m     %' or m(:,1)'
      sz(2) = sz(2) + 1;
   end    
end
Run Code Online (Sandbox Code Playgroud)

并且为了记录:这不是一个功课,它是出于好奇.虽然这个问题的解决方案在这种情况下永远不会有用,但它们有可能提供关于如何使用某些功能/技术的新知识.

Moh*_*nia 8

这是一个更通用的解决方案

function sz = find_size(m)
sz = [];
m(f(end), f(end));
    function r = f(e)
        r=[];
        sz=[sz e];
    end
end
Run Code Online (Sandbox Code Playgroud)

哪一个

  1. 适用于数组,单元数组对象数组
  2. 它的时间复杂度是恒定的,与矩阵大小无关
  3. 不使用任何MATLAB函数
  4. 易于适应更高的尺寸