我看到這個other question,但他只在一個索引上運行。我需要對列和行索引進行操作,而不使用for循環。 有沒有辦法做到這一點:MATLAB - 直接使用矩陣的索引而不使用循環
讓M(a,b)是矩陣和大小是括號中的一個。我想操縱每個元素爲exp((MN)^ 2)
我看到這個other question,但他只在一個索引上運行。我需要對列和行索引進行操作,而不使用for循環。 有沒有辦法做到這一點:MATLAB - 直接使用矩陣的索引而不使用循環
讓M(a,b)是矩陣和大小是括號中的一個。我想操縱每個元素爲exp((MN)^ 2)
到using bsxfun
的替代,在這裏,將使用meshgrid
:
>> a = 5; b = 4; % Some example dimensions
>> [n, m] = meshgrid(1:b, 1:a)
n =
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
m =
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
>> M = exp((m - n).^2);
注意,這示例主要是指導性的而不是實際的 - bsxfun
解決方案更快,消耗的內存更少 - 但這顯示瞭如何生成矩陣子矩陣cripts。
+1,儘管內存佔用對於較大的'a'和/或'b'變得過於禁忌。 –
@RodyOldenhuis,哦,沒有想到這一點。 – SPRajagopal
這比'bsxfun'慢,並消耗更多的內存。只是在說'。 –
是的,有很多方法。但是,如果沒有你更明確地表達你想要做什麼並展示你的原型代碼,那麼最接近你將得到的答案就是本評論中的第一句話。 –
好的。設M(a,b)爲矩陣,大小爲括號內的一個。我想操縱每個元素exp((m-n)^ 2)。 – SPRajagopal
完成,完成,完成。 – SPRajagopal