performance - 在 MATLAB 中展开矩阵的最快方法是什么?

标签 performance matlab optimization matrix

如何转动矩阵:

[ 0.12 0.23 0.34 ;
  0.45 0.56 0.67 ;
  0.78 0.89 0.90 ] 

转换成带有一堆行的“坐标”矩阵?

[ 1 1 0.12 ;
  1 2 0.23 ;
  1 3 0.34 ;
  2 1 0.45 ;
  2 2 0.56 ;
  2 3 0.67 ;
  3 1 0.78 ;
  3 2 0.89 ;
  3 3 0.90 ]

(行的排列无关紧要,重要的是数据在这个结构中)

现在我正在使用 for 循环,但这需要很长时间。

最佳答案

这是一个使用 ind2sub 的选项:

mat= [ 0.12 0.23 0.34 ;
  0.45 0.56 0.67 ;
  0.78 0.89 0.90 ] ;

[I,J] = ind2sub(size(mat), 1:numel(mat));
r=[I', J', mat(:)]

r =

    1.0000    1.0000    0.1200
    2.0000    1.0000    0.4500
    3.0000    1.0000    0.7800
    1.0000    2.0000    0.2300
    2.0000    2.0000    0.5600
    3.0000    2.0000    0.8900
    1.0000    3.0000    0.3400
    2.0000    3.0000    0.6700
    3.0000    3.0000    0.9000

请注意,与您的示例相比,索引是相反的。

关于performance - 在 MATLAB 中展开矩阵的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21689129/

相关文章:

matlab - 如何在 MATLAB 中打印小圆圈?

python - 使用霍夫圆变换检测圆阵列

sql - 您的解释计划中的 PARTITION RANGE ALL 不好吗?

java - 最大独立 JVM 进程数

algorithm - 减少图表的数据点,同时保持其主要特征

mysql - 慢插入mysql

python - Scipy.optimize.minimize() 用于非线性目标的两个数组

ios - 如何优化我的代码以在不同的类中使用一种方法而不是多个相同的方法?

r - MATLAB 和 R 之间的执行时间差异很大

c# - 64 位整数上的 C++ 与 C# 按位运算 - 性能