עזרה, תכנות במטלב

עזרה, תכנות במטלב

הידע שלי בתוכנה/תכנות הוא יחסית בסיסי, רמה של קורס באונ' לא לתלמידי מחשבים, אז בבקשה אל תספקו לי פתרונות מורכבים מידי.

נתקלתי ב-2 בעיות.
1. אם אני משנה מטריצה שקיבלתי בinput בתוך הפונקציה מבלי להחזיר אותה ל-output אז היא לא משתנה.
האם יש דרך לגרום לה להשתנות?
אם זה אומר להחזיר את המטריצה ב-output, אז חשוב לי לדעת: א. האם יש הכפלה של הנתונים? ב. איך מחזירים יותר ממטריצה אחת (אני רוצה לשנות 2).

2. הגדרתי וקטור מחוץ ללולאה v=[].
כל אברציה של הלולאה היא עושה פעולות ואז נותנת את וקטור המספרים a.
אני בודקת האם יש חפיפה בין a ל-V (שכחתי את השם של הפקודה אבל היא נותנת את כל מה שיש בa ואין ב-V)
את תוצאת הסדיקה אני רוצה להוסיף ל-V.
עשיתי זאת על ידי V=[V a] אבל מטלב נותן הודעת שגיאה.
שרשור וקטורים מכל מקום כן עובד מחוץ ללולאה.

אשמח להסבר/עזרה, תודה מראש!!!
 

bismark1

New member
אתה אופטיקאי?

איך עושים אברציה ללולאה?

בכל מקרה:
1.
function [y1,...,yN] = myfun(x1,...,xM)


אז כן - את מה שאתה רוצה שהפונקציה תוציא אתה מחזיר כפלט, אחרת כל מה שאתה עושה זה לשנות עותק מקומי של המטריצה שלך.

2. מה הודעת השגיאה? בדקת שהמימדים של הוקטורים תואמים?

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

function index=rep(text,ndata)
index=[];
for i=1:1:size(text,1)
where=find(strcmp(text(i,1),text:),1)));
if length(where)>1
[max_var,good_index]=max(var(ndata(where-1,:),0,2));
where(good_index)=[];
index=[index where];
end
end
end
 
הבעיה היא בשורה index=[index where];

ניסיתי לעשות כבר כל אופציה חלופית אחרת.
לבנות מטריצה שמקבלת את הוקטור where בהתאם למיקום של אינדקס,
שגיאה כי מספר העמודות לא שווה בכל שורה.
חסר כאן פעולה של setdiff() או של Unique כי אני רוצה
שהאברים בindex לא יחזרו על עצמם (לא יודעת למה בגרסה הזאת לא רשמתי).
מכל מקום באמצעות האינדקב אני אחרי זה מוחקת בסקריפט המרכזי שורות מdtat ומtext
 
למעלה