這是給定的系統,我想繪製和獲得矢量場和他們與X軸的角度。我想找到閉合曲線的索引。使用matlab獲得矢量場和矢量場在閉合曲線上的角度?
我知道如何通過選擇方便點理論上做到這一點,看看矢量看起來像在這一點上。此外,我可以隨時使用
計算的角度。不過,我在嘗試編碼時遇到了問題。如果問題不清楚,請不要打擾我。我以我理解它的方式問這個問題。我是matlab新手。請有人指點我正確的方向嗎?
這是給定的系統,我想繪製和獲得矢量場和他們與X軸的角度。我想找到閉合曲線的索引。使用matlab獲得矢量場和矢量場在閉合曲線上的角度?
我知道如何通過選擇方便點理論上做到這一點,看看矢量看起來像在這一點上。此外,我可以隨時使用
計算的角度。不過,我在嘗試編碼時遇到了問題。如果問題不清楚,請不要打擾我。我以我理解它的方式問這個問題。我是matlab新手。請有人指點我正確的方向嗎?
對於新來matlab的人來說,這是一個非常艱鉅的挑戰,我會建議先採取一些較小的挑戰,以便讓您習慣於matlab的約定。這就是說,Matlab是關於數字解決方案的,所以除非你想走下符號數學路線(在這種情況下,我可能會選擇使用Mathematica),你的第一個任務是決定極限和粒度你的模擬空間,然後定義它們,這樣你就可以應用你的系統方程。
有許多這樣做的方法 - 一些更有效的 - 但爲了便於理解,我提出這樣的:
軸定義單獨第一
xpts = -10:0.1:10;
ypts = -10:0.1:10;
tpts = 0:0.01:10;
的A:B:C語法給出你的下限(a),上限(c)和間距(b),所以你會得到x的201點。如果更適合您,可以使用linspace
表示法,通過在matlab控制檯中鍵入doc linspace
來查看它。
現在您可以創建座標點的網格。你最終會得到三個三維矩陣,一個擁有你的空間的x座標,另一個擁有y和t座標。他們看起來多餘,但它是值得的,因爲你可以對它們使用矩陣運算。
[XX, YY, TT] = meshgrid(xpts, ypts, tpts);
從這裏開始,您可以在這些矩陣上執行任何您喜歡的操作。因此,要計算x^2.Y你可以做
x2y = XX.^2 .* YY;
記住的是,你會得到一個三維矩陣了出來,並在第三維的所有切片(對應於T)將是相同的。
的一些注意事項
Matlab具有良好的內置幫助系統。您可以在控制檯或'doc functionname'中鍵入'help functionname'以獲得快速提示,以打開幫助瀏覽器以獲取詳細信息和示例。他們真的很好,他們會有很大的幫助。
我使用XX和YY,因爲這只是我的偏好,但我避免使用單字母變量名作爲一般規則。你不需要。
矩陣乘法是默認值,所以如果你試圖做XX*YY
你不會得到你所期望的答案!要進行元素相乘,請改用.*
運算符。這將做A11 = B11 * C11,A12 = B12 * C12,...
到矩陣的每個元素提高到一個給定的功率使用.^
,而不是^
出於同樣的原因。同樣的部門。
您必須確保您的矩陣尺寸適合您的操作。要在矩陣上進行元素操作,它們必須具有相同的大小。要進行矩陣運算,他們必須遵循矩陣規則的大小,輸出也一樣。你會發現size()
功能方便調試。
可以使用quiver
來繪製矢量場。要分開繪製組件,您有更多的選擇:surf
,contour
和其他。查找幫助文檔,他們將鏈接到類似的類型。 plot
系列主要關於線條,因此對於沒有創造性地使用標記,顏色和阿爾法的領域來說,它們幫助不大。
要繪製曲線或任何其他輪廓,您不必測試矩陣的值 - 由於粒度的原因,它無法正常工作 - 您可以使用具有特定輪廓值的contour
繪圖。
動態方程的求解系統是完全可能的,但是你將會進行數值模擬,你的結果將再次受到網格粒度的影響。如果你有一些封閉的解決方案,比如你的phi表達式,他們可能會更容易在概念上工作,但在matlab中工作起來卻很困難。
這類問題在matlab中很容易理解,但它涉及到一些非基本的用法,除非您掌握Matlab的語法,否則很難遵循這些用法。我建議以2d網格開始,而不是
[XX, YY] = meshgrid(xpts, ypts);
並計算x^2.y或x^2 - y^2等函數。習慣於使用quiver
繪製它們或在強度圖或曲面中分別繪製座標。
非常感謝你的時間和這個解釋。對此,我真的非常感激。我會更詳細地閱讀並繼續。非常感謝你。 – user5184
這是一種樂趣,我希望它有助於:) – xenoclast