การตรวจวัดแรงกดด้วยรหัส MATLAB


13

ฉันยังใหม่กับหัวข้อของการตรวจจับการบีบอัด ฉันอ่านบทความเกี่ยวกับเรื่องนี้โดย R.Baranuik, Y.Eldar, Terence Tao เป็นต้นเอกสารเหล่านี้โดยทั่วไปให้รายละเอียดทางคณิตศาสตร์ที่อยู่เบื้องหลังมันคือ Sparsity, RIP, L1 norm minimization เป็นต้นอย่างไรก็ตามทุกคนสามารถให้รหัส MATLAB ได้ ที่บรรลุการรับรู้การบีบอัด?

ขอบคุณล่วงหน้าสำหรับความช่วยเหลือใด ๆ


1
ขอรหัสนอกหัวข้อที่นี่
pichenettes

คำตอบ:


18
  • รหัสส่วนใหญ่เป็นรหัส Matlab ธรรมดา
  • แต่ละโฟลเดอร์ในแพ็คเกจประกอบด้วยอัลกอริธึมการกู้คืน CS ตามรูปแบบสัญญาณเฉพาะและสคริปต์ที่ทดสอบอัลกอริทึมการกู้คืนนั้น ชื่อของสคริปต์มักจะลงท้ายด้วย '_example.m'
  • Manopt อาจเป็นสิ่งที่คุณใช้เพื่อทำให้อัลกอริทึมรวมอยู่ในกล่องเครื่องมืออื่น ๆ

การเพิ่มประสิทธิภาพใน manifolds เป็นกระบวนทัศน์ที่มีประสิทธิภาพในการแก้ไขปัญหาการเพิ่มประสิทธิภาพแบบไม่เชิงเส้น

กล่องเครื่องมือนี้ใช้อัลกอริธึมหลายอย่างในการคำนวณการขยายตัวแบบเบาบางในพจนานุกรมซ้ำซ้อนและเพื่อแก้ปัญหาผกผันด้วยการทำให้เป็นระเบียบแบบกระจัดกระจาย

แต่ทั้งหมดนั้นและอื่น ๆ รวมอยู่ในรายการกล่องเครื่องมือนี้

ฉันพบว่าส่วนที่ยากคือการหา psuedocode - นั่นคือสิ่งที่พวกเขาอธิบายถึงอัลกอริทึมจริง ๆ นี่คือตัวอย่างของอัลกอริทึมที่มี psuedocode:


8

ฉันคิดว่าฉันกำลังตอบคำถามนอกหัวข้อที่นี่ แต่สำหรับวิธีการเพิ่มประสิทธิภาพ L1 ฉันพบ YALL1 ( http://yall1.blogs.rice.edu/ ) และ SPGL1 ( http://www.cs.ubc.ca/) ~ mpf / spgl1 / ) แพ็คเกจที่มีประโยชน์และมีประสิทธิภาพมาก TFOCS ( http://cvxr.com/tfocs/ ) อาจใช้งานได้ยากขึ้นเล็กน้อย แต่ควรมีความยืดหยุ่น นอกจากนี้ยังมี CVX ( http://cvxr.com/cvx/ ) ซึ่งทำให้ง่ายต่อการพิมพ์ปัญหาการเพิ่มประสิทธิภาพของการนูนโดยตรงลงในรหัส แต่มันช้าลงอย่างมากสำหรับการแก้ปัญหาเฉพาะการตรวจจับการบีบอัดเนื่องจากเป็น แก้ปัญหาทั่วไปมาก

นอกจากนี้ยังมีอัลกอริทึมการสร้างใหม่บางอย่างที่มีอยู่ใน Sparselab ( http://sparselab.stanford.edu/ )

รายการของรหัสการสร้างใหม่ที่กระจัดกระจายมีขนาดใหญ่กว่าแสดงไว้ที่นี่: https://sites.google.com/site/igorcarron2/cs#reconstruction


6

โปรดจำไว้ว่า L1 ไม่ใช่วิธีการเดียวในการตรวจจับแรงกด ในการวิจัยของเราเราประสบความสำเร็จที่ดีขึ้นด้วยการส่งข้อความโดยประมาณ (AMP) ฉันกำหนด "ความสำเร็จ" เป็นข้อผิดพลาดที่ต่ำกว่าช่วงการเปลี่ยนภาพที่ดีขึ้น (ความสามารถในการกู้คืนโดยมีการสังเกตน้อยลง) และความซับซ้อนที่ลดลง (ทั้งหน่วยความจำและซีพียู)

อัลกอริธึมการส่งข้อความโดยประมาณกำหนดกรอบการทำงานแบบเบย์เพื่อประเมินเวกเตอร์ที่ไม่รู้จักในระบบเชิงเส้นขนาดใหญ่ซึ่งอินพุตและเอาต์พุตของระบบเชิงเส้นถูกกำหนดโดยแบบจำลองที่เป็น probablistic (เช่น "เวกเตอร์นี้วัดด้วยสัญญาณรบกวน") ศูนย์ ") วิธีการดั้งเดิมของแอมป์ปลอมแปลงโดย Donohoได้รับการปรับปรุงโดยRanganเป็นข้อความผ่านการประมาณโดยทั่วไปพร้อมรหัส Matlab. อินพุตและเอาต์พุตสามารถเป็นฟังก์ชันความหนาแน่นของความน่าจะเป็นได้ตามอำเภอใจเกือบทั้งหมด ในการวิจัยของเราเราพบว่า GAMP โดยทั่วไปเร็วกว่าแม่นยำและมีประสิทธิภาพมากขึ้น (อ่าน: เส้นโค้งการเปลี่ยนเฟสที่ดีกว่า) กว่าวิธี L1 นูนและแนวทางโลภ (เช่น Orthogonal Matching Pursuit)

ที่ปรึกษาของฉันและฉันเพิ่งเขียนบทความเกี่ยวกับการใช้ GAMP สำหรับการวิเคราะห์ CS โดยที่หนึ่งคาดว่าจะมีจำนวนศูนย์เป็นจำนวนมากไม่ใช่ในเวกเตอร์ x ที่ไม่รู้จัก แต่แทนที่จะใช้ฟังก์ชันเชิงเส้นของ Wx



0

ฉันได้เขียนบทช่วยสอนการเขียนโค้ดเพื่ออธิบายพื้นฐานของ CS, MP, OMP และอื่น ๆ สำหรับผู้เริ่มต้น คุณสามารถตรวจสอบพวกเขาได้ที่https://sparse-plex.readthedocs.io/en/latest/demos/index.html

มันเป็นส่วนหนึ่งของห้องสมุด sparse-plex ของฉันที่ GitHub https://github.com/indigits/sparse-plex

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.