【发布时间】:2015-08-06 03:22:21
【问题描述】:
如果这很容易解决,请原谅我,但是,我在 MATLAB 中有一个包含距离值的上三角矩阵。 假设每个第 i 个和第 j 个值分别有行标签和列标签(考虑到矩阵分别包含每个对应行和元素的 {i,j} 值)。 我想创建一个如下所示的文本文件:
Label-i val Label-j
其中 i 和 j 是各自的列标签。使用 2 个 for 循环来迭代所有元素非常简单。
[r,~] = size(A);
mat = [];
for i = 1:r
for j = 1:r
tmpmat = [collabels(i) A(i,j) rowlabels(j)];
mat = [mat;tmpmat];
end
end
但是,我想知道有哪些更快的方法可以做到这一点。我以前在论坛上看到过类似的帖子,但与此不完全相关。如果有人能给我一些关于这方面的见解,那就太好了。我看到了 arrayfun 和其他可以使用的 MATLAB 函数,但是,我不知道在这种情况下如何使用它们。 谢谢您的帮助。
【问题讨论】:
-
文本文件中的行必须按特定顺序排列吗?例如,您的代码当前会遍历某一行的所有列,然后再移动到下一行。这必须保持真实吗?
-
没有。只要它处理每个 i 和 j 的所有值。