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

lau*_*esa 2 matlab matrix

我正在练习一个Cody问题:

在某个时候,我们都必须记住枯燥的时间表.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
Run Code Online (Sandbox Code Playgroud)

我可以不用for循环写它并提高我的分数吗?

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

the*_*alk 5

随着ndgrid这是一个简单的任务.

[x,y] = ndgrid(1:n)
m = x.*y
Run Code Online (Sandbox Code Playgroud)

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

m = bsxfun(@times,1:n,(1:n).')
Run Code Online (Sandbox Code Playgroud)


Wou*_*ers 5

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

m = [1:n]'*[1:n];
Run Code Online (Sandbox Code Playgroud)

但我怀疑bsxfun,并ndgridthewaywewalk提出的解决方案是在计算时间方面会更有效率.


Rat*_*ert 5

越简越好; 乘以向量:

m = (1:n)'*(1:n);
Run Code Online (Sandbox Code Playgroud)

最好,