【问题标题】:Matlab Vectorization for nested for loops with 2D matrices具有二维矩阵的嵌套 for 循环的 Matlab 向量化
【发布时间】:2014-11-27 01:15:15
【问题描述】:

好的,伙计们,我已经编辑了问题。

results = zeros(96,96);
for a=1:96
    for b=1:85
        results(a,b) = abs(input(a,b) - input(a,(b+11)))
    end
end

输入也是一个 96x96 矩阵。

你能帮我对循环进行矢量化吗?

【问题讨论】:

  • 不应该有results的预分配和迭代器从1开始的吗?
  • 除了 Divakar 的评论,为什么不做 for b=1:85 并消除 if-statement?
  • 另外,请避免使用与 MATLAB 内置函数名称相同的变量名称 - 在这种情况下为 input

标签: matlab for-loop 2d vectorization nested-loops


【解决方案1】:

修改以匹配编辑的问题,并更改输入矩阵的名称以避免与matlab关键字冲突。您最终会得到一个 96x85 矩阵,它占据了您初始化的零矩阵的前 85 行:

results = zeros(96,96);
results(:,1:85) = abs(inputMatrix(:,1:85) - inputMatrix(:,12:end))

【讨论】:

  • 你似乎需要用零填充或预先分配它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
  • 2013-03-03
  • 2021-07-29
  • 2011-09-16
相关资源
最近更新 更多