close

Meshgrid在Matlab裡面是個很方便的工具。

假設有一組數字 a = [1 3 5] ,以及另外一組數字 b = [2 4 6 8 10]。我想找出這些所有a乘b的組合,應該怎麼做? 因為兩組數字的長度不一樣我們不能直接相乘。這時我們就可以用meshgrid來完成這件事。

%% meshgrid範例
a = [1 3 5]
b = [2 4 6 8 10]
[x,y] = meshgrid(a,b)

如此一來就能看到以下的結果

meshgrid.PNG

meshgrid產生了兩個大小一樣的矩陣,x是把a的數字一列一列排成5*3的矩陣。y則是把b的轉置一行一行排成5*3的矩陣。如此一來就可以輕易地用點乘得到所有相乘的排列組合。

Q = x.*y

product.PNG

了解他怎麼運作後我們就可以進一步來討論更常遇到的請況。假設我想畫出點(1,2)、(1,4)、(1,6)、(1,8)、(1,10)、(3,2)、....、(5,10)。meshgrid就可以輕鬆做到這點。我們一樣用剛剛的寫法

a = [1 3 5]
b = [2 4 6 8 10]
[x,y] = meshgrid(a,b)

接者把它畫出來

plot(x,y,'rd');

plotxy.PNG

這樣一來就能輕鬆標出所有點了~

arrow
arrow
    創作者介紹
    創作者 Worldexplorer 的頭像
    Worldexplorer

    worldexplorer

    Worldexplorer 發表在 痞客邦 留言(0) 人氣()