שאלה ב MATLAB

johnny maxwell

New member
שאלה ב MATLAB

לא בדיוק שפת תכנות אבל בכל זאת... אני רוצה לבנות טבלת LOOKUP, והבעייה היא כזאת: אני מעוניין להימנע מלולאות במידת האפשר. נניח שלכל איבר במערך B אני מעוניין לבצע פעולה לפי טבלה A. למשל, נניח ש A הוא מערך עם שתי עמודות. העמודה הראשונה היא ערכים (שמהווים את כל טווח הערכים שאיבר במערך B יכול לקבל), והעמודה השנייה היא מהווה מידע נוסף שקובע איזו החלטה לקחת (נניח באיזה מספר להכפיל את הערך במערך B). איך עושים את זה בלי לולאה? השורה הבאה B(FIND(B==A))=SOMETHING טובה רק אם A הוא סקלר (או אם זו מטריצה במימד של B אבל אז זה לא מתאים למה שאני רוצה). אני יכול לעשות זאת עם לולאה שרצה על מערך A, אבל כאמור, זה מה שאני רוצה למנוע. זה קריטי ליעילות כי אני אמור לעבוד עם מערכים רב מימדיים גדולים... מקווה שהצלחתי להבהיר את הבעייה. תודה.
 

voguemaster

New member
תלוי בפעולות לא ?

אם יש לך פעולות שונות שאתה צריך לבצע ע"פ הערך של העמודה השניה של A אתה לא יכול לבצע את כל הפעולות עם אותו ביטוי. מצד שני, אם תוכל לחלק לקבוצות בעלות אותה פעולה תוכל לעשות את זה. היות ולא מותקן לי matlab כרגע אני לא אעלה פה דוגמא..
 

johnny maxwell

New member
לא (לדעתי לפחות)

תראה למה אני מתכוון (זה ממש לא השימוש שאני צריך, אבל העיקרון דומה): נניח שאני אמור לקלוט מערך חדש שמכיל גבהים של של מיליון אנשים. נניח שעושים דיסקרטיזציה של גבהים לפי קפיצות של ס"מ ובוא נאמר שטווח הגבהים הוא בין מטר אחד לשניים. כל אחד מאנשים באוכלוסייה אמור לקבל כרטיס בצהע מסויים לפי הגובה שלו (נניח שיש לנו מאה צבעים שונים). מה שאני רוצה, זה שבמקום לבדוק את כל המיליון, אני אצור טבלה חדשה עם שתי עמודות. אחת מכילה מאה גבהים שונים. השנייה מכילה מאה צבעים שונים. ואז: להסתכל על המערך של המיליון, ולכל אחד מהתאים בו, לבדוק מה הגובה שלו, ולפי זה לתת לו צבע. אני בטוח שחייבת להיות דרך לעשות זאת מבלי לרוץ על כל הטבלה בלולאה, אלא לגשת ישירות לשורה בטבלה לפי הגובה המתאים. תודה בכל מקרה.
 
למעלה