28-03-2009, 23:23
|
|
|
חבר מתאריך: 11.11.01
הודעות: 1,751
|
|
עזרה ב matlab - המרת מטריצת cell למטריצת double
היי,
יש לי מטריצת cell שמכילה בכל תא מילה מסויימת (בחלק מהתאים מופיעה מילה זהה למילה בתא אחר).
מכיוון שרוב הפונקציות ב MATLAB עובדות על מספרים ולא על מחרוזות אני מעוניין ליצור מטריצת double שתכיל מספרים שייצגו את המילים במטריצה וכך אני אוכל להשתמש בכל שלל הפונקציות של matlab כדי לנתח את המידע שאני צריך.
לצורך כך כתבתי פונקציה שאמורה לקבל מטריצה מסוג cell ולהחזיר מטריצת double וטבלת המרה שתשמש אותי כדי לחזור למחרוזות בסוף התהליך החישובי.
קוד:
function [db,conv] = db2num(textdb)
%create the conversation table
conv = unique(textdb(:));
conv=conv(~cellfun('isempty',conv))
%create the db
db=zeros(length(textdb))
for i=1:length(conv)
[j,k]=find(ismember(textdb, conv(i))==1)
db(j,k)=i
end
הבעיה היא שמשום מה הפונקציה מזייפת, כלומר היא מכניסה מספרים למקומות לא נכונים.
כאשר ניסיתי להבין למה זה קורה שמתי לב שהשורה
[j,k]=find(ismember(textdb, conv(i))==1)
שאמורה להחזיר לי את הקורדינאטות של המילה שמופיעה ברשימה מחזירה לי ערכים לא נכונים משום מה.
יש למישהו רעיון איך לעשות שזה יעבוד כמו שצריך?
או דרך פשוטה יותר לבצע המרה של מטריצת cell למטריצת double?
_____________________________________
בברכה,
Uninstall
|