【发布时间】:2011-07-08 11:12:27
【问题描述】:
我是 Octave 的新手。我有两个矩阵。我必须将一个矩阵的特定列与另一个进行比较(我的矩阵 A 包含超过 5 个变量,同样矩阵 B 包含相同的变量。)如果矩阵 A 的第一列中的元素等于第二列中的元素矩阵 B 然后我必须使用第二个矩阵 B 的第三列来计算某些值。我通过使用 for 循环使用八度音阶来执行此操作,但它会消耗大量时间来进行单天的计算,我必须这样做一年 。因为矩阵的大小非常大。请提出一些替代方法,以便我可以减少时间和计算量。 先感谢您。
感谢您的快速回复 -hfs 继续同样的问题, 谢谢你,但这只有在两行中的两个元素相等时才有效。例如我的矩阵是这样的,
A=[1 2 3;4 5 6;7 8 9;6 9 1]
B=[1 2 4; 4 2 6; 7 5 8;3 8 4]
这里 A 的第一个元素的第 1 列等于 B 的第一个元素的第 1 列,即使是第二列,因此我可以取 B 的第三个元素,但是第 1 列的第二个元素在 A 和 B 中是相等的,但第 2 列的第二个元素不同,这里它应该搜索该元素并在第三列中打印该元素,并且使用 for 循环执行此操作,由于尺寸较大,该循环非常慢。在我的实际问题中,我给出了循环如下所示:
for k=1:37651
for j=1:26018
if (s(k,1:2)==l(j,1:2))
z=sin((90-s(k,3))*pi/180) , break ,end
end
end
我想要一种比这更快的替代方法。
【问题讨论】:
标签: performance for-loop matrix octave