2011-11-26 84 views
1

我有一个m×n的整数矩阵,其中n是一个相当大的数m和n〜1000。我想遍历所有这些并执行一些操作,例如访问特定单元格并分配特定单元格的值。Matlab中矩阵元素的高效访问

但是,至少在我的实现中,这是相当低效的,因为我有两个for循环与矩阵(a,b)=矩阵(a,b + 1)或沿着这些线的东西。有没有其他方法可以做到这一点,因为我目前的实施需要很长时间来遍历大约100,000个单元格并执行一些操作。

谢谢

回答

0

MATLAB的使用矩阵的列存储器主要排序(不像C)。你确定你正在按照正确的顺序迭代索引吗?如果没有,请尝试切换它们,看看性能是否提高。

1

在matlab中,几乎总是可以避免循环。 如果你想要做Matrix(a,b)=Matrix(a,b+1),你应该做Matrix2=Matrix(:,2:end);

如果你更精确地说你在循环内做什么,我可以帮助你更多。

0

如果你不能摆脱for循环,一种可能性是重写C中昂贵的操作并创建一个MEX文件,如here所述。