使用MATLAB中的表加速循环操作

时间:2016-02-18 14:35:17

标签: performance matlab

我在MATLAB中使用两个表:

A1_Table   [m*r]
A2_Table   [m*q]

其中表格具有不同的列数但行数相似,并且它遵循r>q。实际上,A2_TableA1_Table的子样本,这意味着A1_Table中的所有矩阵条目也可以在A2_Table中找到。

与每列相关联的是 VariableName ,每行都有 RowName 。我想要做的是将A1_Table中的所有条目设置为,其中A2_Table的值大于零。这是我的表现:

 [r,c] = find(table2array(A2_Table)) ;

  for i = 1 : length(r)
       A1_Table(A2_Table.Properties.RowNames(r(i)),A2_Table.Properties.VariableNames(c(i))) = {0} ;
  end

如您所见,我通过行和列名称(关键字)访问A1_Table中的相应条目。此过程有效,但速度非常慢,因为存在需要运行循环的200万个值。有什么想加快这个过程吗?感谢

1 个答案:

答案 0 :(得分:1)

这是一种方式。它似乎很好地扩展:

[