עבור לתוכן

שובר את הראש תוכנה פשוטה ב-MATLAB

Featured Replies

פורסם

יש לי את התוכנה הבאה ב-C:

#include <stdio.h>
#include <math.h>

double f(double x)
{
return cos(x) - x*x*x;
}

double SecantMethod(double xn_1, double xn, double e, int m)
{
int n;
double d;
for (n = 1; n <= m; n++)
{
d = (xn - xn_1) / (f(xn) - f(xn_1)) * f(xn);
if (fabs(d) < e)
return xn;
xn_1 = xn;
xn = xn - d;
}
return xn;
}

int main(void)
{
printf("%0.15f\n", SecantMethod(0, 1, 5E-11, 100));
return 0;
}

אני מת להפוך אותה ל- m file ב- matlab, אבל אני פשוט לא מצליח... :'(

אני אשמח אם מישהו יכול לתרגם את זה לשפת MATLAB ולהסביר לי את העקרונות של המעבר מה"ראש" של C ל"ראש" של MATLAB...

תודה !! :)

פורסם

אני בספק שמישהו יסביר לך מהתחלה את ה- syntax של מטלב - זה פשוט לא ריאלי.

למטלב יש קבצי עזרה מעולים - תתחיל מה- getting started ומה-demos ותתקדם. אם יש משהו ספציפי לא ברור, אתה מוזמן לשאול.

פורסם
  • מחבר

אני בספק שמישהו יסביר לך מהתחלה את ה- syntax של מטלב - זה פשוט לא ריאלי.

למטלב יש קבצי עזרה מעולים - תתחיל מה- getting started ומה-demos ותתקדם. אם יש משהו ספציפי לא ברור, אתה מוזמן לשאול.

אני לא ממש חושב שהם כ"כ יעילים, אבל נניח...

בכל אופן, אם אני כותב כמה פונק' לאותה תוכנית, אני חייב שכל פונק' תופיע בקובץ m משלה, או שאני יכול להכניס כמה פונק' לתוך קובץ m בודד ? :silly:

פורסם

אין שום בעיה להכניס פונקציות עזר לתוך קובץ M בודד.

הפקודה help function מספקת לך מידע זה, ועוד.

פורסם
  • מחבר

אז ככה,

אם הבנתי נכון, ההפרדה בין הפונקציות באותו קובץ M תהיה ע"י כך שאסיים כל פונקציה עם הצהרת: end, האם הבנתי נכון? ???

דבר נוסף, מה המקביל של return בשפת C ל-Matlab?

נניח יש לי תנאי מסוים, וברגע שהוא מתקיים אני רוצה שהפונקציה תחזיר ערך כלשהו, מה המקביל לכך? :s05:

פורסם
  • מחבר

איזה כיף שיש תיעוד ומדריכים, נכון?

http://www.mathworks.com/access/helpdesk/help/techdoc/ref/function.html

זה לא ממש ענה לי על השאלה: מה המקביל של return בשפת C ל-Matlab....

אשמח אם תוכל להראות לי איפה זה מופיע בלינק כי די עברתי עליו כמה וכמה פעמים... :-\

פורסם

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

בדוגמה 1 ששם מגדירים פונקציה בשם stat שמקבלת פרמטר x ומחזירה שתי תוצאות - mean ו-stdev.

פורסם

אם אתה רוצה לסיים את הפונקציה לפני הסוף, משתמשים ב-end.

ב-return.

פורסם

ואללה, צודק. end אמור לבוא רק בסוף.

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

פורסם
  • מחבר

אז אם אני כותב מספר פונק' בקובץ בודד, איך התוכנית יודעת להפריד בין פונק' לפונק' ללא end ? הרי הקומפיילר אמור לחפש סוף קוד לפונק' איפשהו... ???

פורסם

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

פורסם
  • מחבר

1) נניח שיש לי פונקציה שבתוכה יש לי לולאת for ובתוכה תנאי if נניח שהתנאי if מתקיים ואני רוצה שברגע הזה הפונקציה תחזיר את הערך שלה, כלומר שמשם היא תצא מהפונקציה ותחזור להמשך התכנית (ולא תמשיך בלולאה עצמה או בכלל בפונקציה) - כיצד ניתן לבצע זאת? האם אני יכול לתת את הערך שאני רוצה ל-output ואז לרשום return

2) אחרי שרשמתי את הפונקציות בקובץ ואני רוצה להכניס שורות קוד רגילות כמו מה שמקביל לMAIN בשפת סי, איך התוכנית תדע שהשורות האלו לא שייכות לפונקציה האחרונה בסדר, או שאני צריך בעצם להכניס את השורות תוכנית למעלה ומתחת את כל הפונקציות ואז לא תהיה בעיה ?

פורסם

1) נניח שיש לי פונקציה שבתוכה יש לי לולאת for ובתוכה תנאי if נניח שהתנאי if מתקיים ואני רוצה שברגע הזה הפונקציה תחזיר את הערך שלה, כלומר שמשם היא תצא מהפונקציה ותחזור להמשך התכנית (ולא תמשיך בלולאה עצמה או בכלל בפונקציה) - כיצד ניתן לבצע זאת? האם אני יכול לתת את הערך שאני רוצה ל-output ואז לרשום return

כן.

2) אחרי שרשמתי את הפונקציות בקובץ ואני רוצה להכניס שורות קוד רגילות כמו מה שמקביל לMAIN בשפת סי, איך התוכנית תדע שהשורות האלו לא שייכות לפונקציה האחרונה בסדר, או שאני צריך בעצם להכניס את השורות תוכנית למעלה ומתחת את כל הפונקציות ואז לא תהיה בעיה ?

זו דרך אחת. דרך נוספת היא לפצל את הקוד לכמה קבצי M, כשבכל קובץ פונקציה בודדת. בשיטה זו אפשר לקרוא לכל פונקציה משורת הפקודה, ואילו בשיטה הראשונה הפונקציות הנוספות בתוך קובץ ה-M לא זמינות למשתמש (שזה אולי מה שאתה רוצה).

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים