我有一个m×n整数矩阵,其中n是一个相当大的数m和n~1000。我想迭代所有这些并执行一些操作,例如访问特定单元格并分配特定单元格的值。
然而,至少在我的实现中,这是相当低效的,因为我有两个带有矩阵(a,b)=矩阵(a,b + 1)的循环或沿着这些行的某些东西。有没有其他方法可以做到这一点,因为我当前的实现需要很长时间来遍历大约100,000个单元并执行一些操作。
谢谢
答案 0 :(得分:1)
在matlab中,几乎总是可以避免循环。
如果您想Matrix(a,b)=Matrix(a,b+1)
,请执行Matrix2=Matrix(:,2:end);
如果您对循环内部的操作更加准确,我可以为您提供更多帮助。
答案 1 :(得分:0)
Matlab使用内存中矩阵的列主要排序(与C不同)。您确定以正确的顺序迭代索引吗?如果没有,请尝试切换它们,看看性能是否有所改善。
答案 2 :(得分:0)
如果你无法摆脱for循环,一种可能性是重写C中的昂贵操作并创建一个MEX文件,如here所述。