פעם ראשונה כאן בפורום + שאלה במטלב

deathcaster

New member
פעם ראשונה כאן בפורום + שאלה במטלב

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

1ca1

New member
אני אתן הדרכה

בוודאי שלא קוד שלם (לי אישית קשה לתת לך קוד מוכן שפשוט תגיש, ואם הייתי בנעליך הייתי מרגיש בעייתי להגיש אותו). בכל אופן, אתה צריך להדפיס את האלכסון או להחזיר אותו בוקטור? בהנחה שמדובר בהדפסה בלבד, בהינתן שאתה בונה פונקציה ב m-file, למשל function PrintSkewDiagonal(x) אז גישה לאיבר הi,j במטריצה ניתן ע"י x(i,j) וכתיבה של הביטוי x(i,j) ללא נקודה פסיק בסוף השורה ידפיס לך את הערך שלו. אז נשאר לעבור על האלכסון המשני, אם אתה יודע שאיברי האלכסון הראשי הם מהצורה (i,i) עבור i=1..n, איך נראים איברי האלכסון המשני? רמז: מספיקה לולאת for בודדת לביצוע הפעולה...
 

deathcaster

New member
המממ....

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

deathcaster

New member
אז מה זה אומר ?

שזה כחול דהוי ?
יאללה יאללה... תעשה משהו.. אתה לא מבין במטלב ?
 

yaniv286

New member
היי ויני התרשמתי מהפורום המקצועי שבניהולך

תגיד סיימת תתואר באו"פ כבר?
 

yaniv286

New member
במדמ"ח

וגם האם מצאת עבודה בתחום כי אני מתלבט ללמוד ניהול ומדעי המחשב או מדמ"ח נטו
 

vinney

Well-known member
תואר ראשון סיימתי כבר מזמן, ואני לא מובטל

אם אתה הולך ללמוד באו"פ - אז תתחיל ללמוד, תחליט אחר כך.
 

deathcaster

New member
חשבתי על דרך להתחכם

אם הייתי יכול לקחת את המטריצה ולעשות לה תמונת ראי... האלכסון המשני היה הופך להיות אלכסון ראשי ואז הייתי כותב פשוט DIAG' ומקבל את וקטור האלכסון... אז כמו שעושים טרנספוז למטריצה ומחליפים שורה בעמודה.. האם יש פקודה במטלב שעושה "תמונת ראי" למטריצה ?
 

1ca1

New member
לא נכון

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

BlackBamba

New member
../images/Emo45.gif מצאת דרך "מחוכמת"

ראה התמונה המצורפת - תרגם ל-3 פקודות מטלללללאב בעצמך
 

deathcaster

New member
מגניב שההתחכמות שלי עבדה... אבל...

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

BlackBamba

New member
מה זה "ביטוי כללי"?!

אתה יכול לקבל את כל הנתונים על המטריצה של הקלט ממטלב. כולל הכל => ולבנות איזו מטריצה שאתה רוצה + לשחק עם האינדקסים (אם תבחר) בצורה הכללית ביותר שקיימת. הכי זול מבחינה חישובית זה כמובן לגשת ישירות לאינדקסים, כמו שהוצע לך בהודעות לעיל. כנס לאתר של מטלב ותוכל לחפש פונקציה/יות שכזאת. יש לפחות שתיים כאלה (שאני זוכר) שהופכות (כתוצאת לוואי) אלכסון משני במטריצה לאלכסון ראשי - בפקודה/פונ' יחידה.
 

deathcaster

New member
ידידי היקר

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

tapuzuser10

New member
קח

clear;clc; A=[1 2 3 4; 5 6 7 8; 9 10 11 12;13 14 15 16]; [m,n]=size(A); j=m; for i=1:m; x(i)=A(i,j); j=j-1; end;
 
למעלה