我正在练习一个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循环写它并提高我的分数吗?
它可能看起来很愚蠢,但它对我的工作也很有用.
随着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)
如果它是您所追求的最小长度答案,您可能需要考虑:
m = [1:n]'*[1:n];
Run Code Online (Sandbox Code Playgroud)
但我怀疑bsxfun,并ndgridthewaywewalk提出的解决方案是在计算时间方面会更有效率.
| 归档时间: |
|
| 查看次数: |
462 次 |
| 最近记录: |