【问题标题】:Making a Matrix element equals the row number times the column number in matlab [duplicate]使矩阵元素等于行号乘以matlab中的列号[重复]
【发布时间】:2015-05-15 17:34:19
【问题描述】:

我想声明一个函数,该函数将 (n, m) 作为输入,并将 mt 作为 n×m 矩阵返回。如果我假设行号(rn)和列号(cn) 我想要mt矩阵的给定元素=行号(rn)*列号(cn)

function  [mt, s] = mtable(n, m)
mt = rand(n, m);
rn = (1:n);
cn = (1:m);
mt(rn, cn) = rn*cn;
s = sum(mt);
end

【问题讨论】:

  • 这个问题已经被问过很多次了。我引用的重复链接是最近的时间。将来请考虑在实际发布问题之前进行搜索以查看您的问题是否存在。它将尽量减少混乱。

标签: arrays matlab matrix matrix-multiplication multiplication


【解决方案1】:

你可以这样做

mt = [1:n].'*[1:m]

实现你想要的矩阵。否则,您发布的示例代码中存在一些语法问题。

【讨论】:

  • 差异几乎是难以察觉的,但是使用圆形倒排而不是方括号更有效,并且您不需要转置中的点:(1:n)'*(1:n )。
【解决方案2】:

您可以直接用cn 的总和为rn 的简单缩放来计算s,因此不会像这样被mt 打扰-

function s = mtable(n, m)
rn = (1:n);
cn = (1:m);
s = cn*sum(rn)
end

如果你真的也需要mt,你可以使用bsxfun -

mt = bsxfun(@times,rn',cn)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多