Simulink Rapid Accelerator สร้างใหม่สำหรับข้อมูลอินพุตแบบแปรผัน

ฉันเพิ่งค้นพบจุดบกพร่องที่ไม่ดีเพราะฉันเชื่อใจ Simulink มากเกินไปที่จะใส่ใจกับการพึ่งพาทั้งหมดเมื่อใช้ Rapid Accelerator

โดยพื้นฐานแล้วฉันมีการวนซ้ำหลายร้อยครั้งในโมเดลเดียวกัน แต่มีข้อมูลอินพุตที่แตกต่างกัน (มาจากพื้นที่ทำงาน MATLAB บน "จากพื้นที่ทำงาน")

ดูเหมือนว่า Simulink จะเพิกเฉยต่อการอ้างอิงข้อมูลอินพุตและจะไม่สร้างเป้าหมายใหม่ตามข้อมูลอินพุตใหม่

ตอนนี้ฉันสามารถบังคับให้สร้างใหม่ได้ทุกครั้ง แต่นี่ไม่ใช่ประเด็นของโมเดลที่ได้รับการปรับปรุง ...

ฉันจะบอก Simulink ให้คอมไพล์ไฟล์เดียวที่มีอินพุต + ตัวเชื่อมโยง (ซึ่งสร้างทุกการวนซ้ำ) แทนที่จะสร้างโมเดลทั้งหมดได้อย่างไร

แม้ว่าสิ่งนี้จะไม่ทำงาน: ฉันจะบังคับให้สร้างใหม่ตั้งแต่แรกได้อย่างไร?

ไม่ใช่ทั้งสองอย่าง

 Simulink.BlockDiagram.buildRapidAcceleratorTarget('my_model');

การตั้งค่าเพิ่มเติม "สร้างใหม่ทั้งหมด (รวมถึงไลบรารี)" ในการตั้งค่าเป้าหมายการจำลองดูเหมือนว่าจะ บังคับ สร้างใหม่ ....


person divB    schedule 30.04.2016    source แหล่งที่มา


คำตอบ (1)


นี่ไม่ใช่จุดบกพร่อง แต่เป็นข้อเท็จจริงที่ได้รับการบันทึกไว้อย่างดี

เมื่อโมเดลที่มีบล็อก "From Workspace" ถูกคอมไพล์เป็นเป้าหมาย Rapid Accelerator ไฟล์ปฏิบัติการแบบสแตนด์อโลนจะมีตัวแปรที่เกี่ยวข้องทั้งหมดในพื้นที่ทำงาน โดยมีขนาดและค่าเท่ากับตัวแปรที่มี ในเวลาคอมไพล์ .

นี่เป็นเหตุผลที่ดีพอที่จะหลีกเลี่ยงการบล็อกเช่น "จากพื้นที่ทำงาน" เป็นค่าเริ่มต้น ยกเว้นในการจำลองโหมดปกติที่รวดเร็วและสกปรก

มันชัดเจนมากถ้าคุณลองคิดดู ลองพิจารณาว่าจะเกิดอะไรขึ้นหากแบบจำลองของคุณใช้ตัวแปรในพื้นที่ทำงาน

myVar = [1 2 3];

ระหว่างการวิ่งครั้งแรก แต่ในการวิ่งครั้งต่อไปคุณตั้งค่าไว้

myVar = [1 2 3 4 5 6 7 8 9 10];

ความยืดหยุ่นประเภทนี้ไม่สำคัญในสภาพแวดล้อม MATLAB/Simulink แต่การใช้งานในภาษาเช่น C หรือ C++ นั้นยากกว่ามาก แม้ว่าการสร้างความยืดหยุ่นนี้ให้กับเป้าหมายการเร่งความเร็วอย่างรวดเร็ว นั้น เป็นไปได้ แต่ฉันก็ไม่แนะนำ

แนวทางที่ดีกว่ามากคือการใช้การนำเข้าไปยังโมเดลของคุณ หรือที่ดีกว่านั้นคือพารามิเตอร์โมเดล มีการอธิบายรายละเอียดเหล่านี้ไว้อย่างละเอียด เช่น ในบล็อกโพสต์นี้ และเนื้อหาต่างๆ สถานที่อื่น ๆ.

person Rody Oldenhuis    schedule 03.05.2016
comment
จริงๆ แล้ว คุณแน่ใจจริงๆเกี่ยวกับเรื่องนี้ใช่ไหม เพราะในระหว่างนี้ ฉันลองบางอย่างแล้วพบว่าหากฉันเปลี่ยนข้อมูลพื้นที่ทำงานสำหรับบล็อก From Workspace ฉันยังคงได้รับผลลัพธ์ถูกต้อง! ฉันใช้ Rapid Accelerator อย่างแน่นอน อาร์กิวเมนต์ของคุณ wrt From Workspace ไม่ถูกต้อง: ในกรณีนี้ กลุ่มการคอมไพล์ที่ดีพอสมควรจะสร้างไฟล์ที่ต้องพึ่งพาทั้งหมดโดยอัตโนมัติ (โดยปกติจะเป็นชุดย่อยที่เล็กกว่า) ซึ่งเป็นพฤติกรรมของยี่ห้อใด ๆ และพฤติกรรมที่ฉันคาดหวังจาก Simulink โดยธรรมชาติ แต่จากการทดสอบของฉัน สิ่งนี้ดูเหมือนจริงเหรอ? - person divB; 05.05.2016
comment
ข้อสังเกตอีกอย่างหนึ่ง: บางทีพฤติกรรมนี้อาจเปลี่ยนไป (ฉันใช้ R2015a) - person divB; 05.05.2016
comment
รออะไร? ดังนั้นคุณจึงเปลี่ยนข้อมูลพื้นที่ทำงาน และหากไม่ได้สร้างใหม่ คุณจะได้ผลลัพธ์ที่แตกต่างออกไปใช่ไหม ถ้าอย่างนั้น... คุณมีปัญหาอะไร? ทั้งหมดที่ฉันรู้ก็คือว่ามันใช้ไม่ได้กับ R2010a (น่าเสียดายที่ฉันยังคงใช้อยู่) ด้วยเหตุผลที่ฉันระบุไว้ นั่นคือจุดรวมของพารามิเตอร์โมเดลและความสามารถในการปรับแต่ง... บางทีพวกเขาอาจเปลี่ยนแปลงมัน ฉันหวังว่าจะเป็นเช่นนั้น - person Rody Oldenhuis; 05.05.2016
comment
ใช่. ฉันมีบางอย่างเช่น for simin=1:100;sim test;end ความแปรปรวนทั้งหมดสำหรับฉันมาจาก From Workspace ไม่แน่ใจว่าเกิดอะไรขึ้นในเบื้องหลัง แต่ไม่มีข้อความเช่น ### Building the rapid accelerator target for model ยกเว้นการวนซ้ำครั้งแรก ถ้าไม่คำนึงถึงเรื่องนี้ การวิ่งทั้งหมดก็ควรให้ผลลัพธ์เหมือนกันใช่ไหม? แต่พวกเขาทำไม่ได้ ... ขอตัวอย่างง่ายๆ เพื่อตรวจสอบข้ามได้ไหม? - person divB; 05.05.2016
comment
เกิดอะไรขึ้นในตอนแรก? เกิดอะไรขึ้นที่ทำให้คุณโพสต์คำถามนี้ และคุณเปลี่ยนแปลงอะไร - person Rody Oldenhuis; 05.05.2016
comment
ฉันสร้างตัวอย่างที่มีเอาต์พุต/ภาพหน้าจอทั้งหมดใน dropbox.com/s/ 9psjlhs6k564nzg/test_rapid.zip?dl=0 ไฟล์ mdl ถูกส่งออกสำหรับ R2010a บางทีคุณสามารถตรวจสอบได้ที่นั่น คำถามเดิมคือเพราะฉันได้ผลลัพธ์ที่ฉันไม่สามารถอธิบายได้ (อาจจะไม่เกี่ยวข้อง) และฉันต้องการให้แน่ใจว่าฉันสามารถยกเว้นว่าข้อมูลบางอย่างเกิดความสับสนเนื่องจากโครงสร้างนี้เนื่องจากฉันเห็นข้อมูลจริงใน ไฟล์ต้นฉบับและไม่สบายใจ - person divB; 05.05.2016