ระยะทางแบบยุคลิดใน Octave


18

ฉันอยากรู้ว่ามีวิธีที่รวดเร็วในการคำนวณระยะทางแบบยุคลิดของเวกเตอร์สองตัวใน Octave หรือไม่ ดูเหมือนว่าไม่มีฟังก์ชั่นพิเศษสำหรับสิ่งนั้นดังนั้นฉันควรใช้สูตรด้วยsqrtหรือไม่


สิ่งนี้อาจได้รับการลงคะแนนเพราะนี่เป็นคำถามพื้นฐานที่คุณควรจะหาคำตอบได้โดยดูที่เอกสารของ Octave หรือทำการค้นหาทางอินเทอร์เน็ตที่เหมาะสม อย่างไรก็ตามฉันเห็นว่าการค้นหา "อ็อคตาเวียร์อ็อกเทฟ" หรือ "คริสตศักราชอ็อกเทลไกลแคน" ไม่ได้ให้ผลลัพธ์ที่เป็นประโยชน์เกือบจะเร็วเท่ากับ "อ็อกเทฟนอร์ม"
Elaine Hale

ข้อเสนอแนะ: ครั้งต่อไป Google คล้าย "Matlab distance ระหว่างสองเวกเตอร์" Mathworks มีเอกสารรวมศูนย์ซึ่งหาง่าย (มีคู่มืออย่างเป็นทางการของ Octave ที่คุณควรหา แต่อาจต้องใช้เวลาสักหน่อยในการหามัน) สำหรับบางสิ่งที่เรียบง่ายมันอาจเป็นไปได้ที่ฟังก์ชั่นที่มีชื่อเดียวกันใน Octave จะทำสิ่งเดียวกัน
Stefan Smith

สถิติของคำถามนี้พูดเพื่อตนเอง
boatcoder

คำตอบ:


33

ระยะทางแบบยุคลิดระหว่างสองเวกเตอร์นั้นเป็นสองค่าคงที่ของความแตกต่างดังนั้น

d = norm( x1 - x2 , 2 );

ควรทำเคล็ดลับในระดับแปดเสียง โปรดทราบว่าหากไม่ได้ระบุอาร์กิวเมนต์ที่สองnormไว้ระบบจะใช้ 2-norm โดยค่าเริ่มต้น



0

นี่คือวิธีการคำนวณระยะห่างระหว่างอาร์เรย์ของเวกเตอร์ ( X) และเวกเตอร์เดี่ยว ( X(1, :)สำหรับวัตถุประสงค์ตัวอย่าง):

distances = sqrt(sum((X - X(1, :)) .^ 2, 2));
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.