假设我想找到一个矩阵的大小,但是不能使用任何函数,例如sizenumellength。有没有整齐的方法可以做到这一点?我可以想到一些使用循环的版本,例如下面的版本,但是有可能在没有循环的情况下执行此操作?

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

出于记录:这不是一项作业,是出于好奇。尽管此问题的解决方案在这种情况下永远不会有用,但有可能在如何使用某些功能/技术方面提供了新的知识。

最佳答案

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

function sz = find_size(m)
sz = [];
m(f(end), f(end));
    function r = f(e)
        r=[];
        sz=[sz e];
    end
end

哪一个
  • 适用于数组单元格数组对象数组
  • 它的时间复杂度是恒定的,并且与矩阵大小无关。
  • 不使用任何MATLAB函数
  • 易于适应更高的尺寸
  • 关于matlab - 查找矩阵的大小,而无需在MATLAB中使用 `size`,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19280117/

    10-09 03:49