用A(i,j)= i * j创建一个矩阵

时间:2015-03-30 09:54:01

标签: matlab matrix

我正在练习科迪问题:

  

在某个时候,我们都必须记住无聊的时间表。 5次5次是25次.5次6次是30次.12次12比你想象的要多。

     

使用MATLAB,时间表应该很容易!编写一个输出时间表的函数,直到所要求的大小。

我用下面的代码解决了它。

function m = timestables(n)
for i =1:n
    for j = 1:n
        m(i,j) = i*j;
    end
end
end

我可以在没有for个周期的情况下编写它并提高我的分数吗?

它可能看起来很愚蠢,但它对我的工作也很有用。

3 个答案:

答案 0 :(得分:5)

使用ndgrid这是一件容易的事。

[x,y] = ndgrid(1:n)
m = x.*y

或者使用bsxfun,可能是最快的解决方案,因为bsxfun始终是最快的;):

m = bsxfun(@times,1:n,(1:n).')

答案 1 :(得分:5)

如果它是您所追求的最小长度答案,您可能需要考虑:

m = [1:n]'*[1:n];

但我怀疑所提出的bsxfunndgrid解决方案在计算时间方面更有效。

答案 2 :(得分:5)

越简越好;乘以向量:

m = (1:n)'*(1:n);

最佳,