MATLAB: การแปลงจาก for for loop เป็น no loop

ฉันมีฟังก์ชั่นที่อาจารย์เตรียมไว้ให้ซึ่งเราไม่สามารถเห็นการทำงานภายในได้

โดยพื้นฐานแล้วฟังก์ชันนี้จะรวมทุกสิ่งที่คุณป้อนเข้าไป

นี่คือวงของเรา:

for i = 1:length(time)-1
    intdefValues(i) = intdef(t, r, time(i), time(i+1));
end

เรากำลังพยายามทำสิ่งนี้:

intdefValues = intdef(t, r, time(1:end-1), time(2:end));

เราผิดหรือเปล่า? มีอีกไหมที่ฟังก์ชั่นไม่รองรับเวกเตอร์?

ไวยากรณ์สำหรับฟังก์ชันในกรณีที่คุณสงสัย

intdef(t, x, a, b)

โดยที่ t = เวกเตอร์เวลา, x = ฟังก์ชัน และ a,b คือพารามิเตอร์เริ่มต้น/สิ้นสุด


person Josh Beckwith    schedule 05.10.2014    source แหล่งที่มา
comment
เมื่อคุณลองแบบไม่วนซ้ำ ฟังก์ชันจะเกิดข้อผิดพลาดหรือไม่?   -  person Autonomous    schedule 06.10.2014
comment
เราผิดหรือเปล่า? มีอยู่แล้วหรือไม่ที่ฟังก์ชันไม่รองรับเวกเตอร์ ใช่ ฟังก์ชันอาจยอมรับเฉพาะสเกลาร์ ไม่ใช่เวกเตอร์ เป็นอินพุต เพียงเพื่อความแน่ใจ คุณควรถามผู้สอนของคุณเกี่ยวกับรายละเอียดเพิ่มเติมเกี่ยวกับไวยากรณ์ของฟังก์ชันที่ต้องการ หรือตามที่ @ ParagS.Chandakkar แนะนำ ให้ลองป้อนเวกเตอร์แล้วดูว่าคุณได้รับข้อผิดพลาดหรือไม่   -  person jub0bs    schedule 06.10.2014
comment
นอกจากนี้ แม้ว่าคุณจะพบวิธีการป้อนเวกเตอร์ แต่ก็อาจไม่ทำให้โปรแกรมทำงานเร็วขึ้น เนื่องจากคุณกำลังเปลี่ยนวิธีการทำงานของฟังก์ชัน intdef() ดังนั้นอาจไม่คุ้มค่าที่จะตรวจสอบ   -  person Autonomous    schedule 06.10.2014


คำตอบ (1)


person    schedule
comment
สิ่งนี้ตอบคำถามได้อย่างไร? - person jub0bs; 06.10.2014
comment
@Jubobs ใช่แล้ว การทดสอบกล่องดำ ( ตามที่ OP ระบุปัญหาที่เป็นของ ) ไม่ใช่ช่องที่สามารถตอบคำถามของคุณได้โดยตรง ทั้งเราและ OP ไม่ทราบรายละเอียดภายในของการใช้งานฟังก์ชัน อย่างไรก็ตาม แม้แต่การทดสอบกล่องดำก็อาจ IMHO พิสูจน์ทางอ้อมถึงภาวะที่กลืนไม่เข้าคายไม่ออกของ PASS/FAIL ไม่ว่าฟังก์ชัน (เหมือนกับ LIB ที่ออกแบบมาอย่างดี/ปรับแต่งประสิทธิภาพจำนวนมาก) ได้รับการออกแบบภายในเพื่อรองรับวิธีการดำเนินการที่ได้รับการแก้ไขหรือไม่ - person user3666197; 06.10.2014