עבור לתוכן

matlab help

Featured Replies

פורסם

say i've got this function h

050501_160828-1132_h.JPG

matlab speaking, i'll define it by -

n = -29:29

h = n*exp(n/10)

now i want to calculate the following function

050501_161009-1134_hper.JPG

how do i do that ?

פורסם

בשביל להגדיר את הפונק' פשוט תשתמש בקובץ m עם תנאי פשוט

function result=h(n)

if(abs(n)<=30)
result=exp(n/10)
else
result=0
end;

זה אם אני זוכר את התחביר נכון

ובטח יש איזו פונק' שעושה סכומים אינסופיים

פורסם
  • מחבר

since these are my first steps with matlab, i'm gonne need a bit more specific explanation

פורסם

בשביל להגדיר פונק' משלך אתה צריך ליצור קובץ m שהשם שלו יהיה השם של הפונק'

בזמן שהגבת כבר ערכתי את ההודעה עם מה שצריך להיות התוכן של הקובץ הזה

אם תשמור את זה כקובץ h.m בתיקיית העבודה שלך, תוכל לגשת אל הפונק' כמו לכל פונק' אחרת

הקובץ m צריך להכיל הצהרה -

function result=func(x)

ל-result אתה צריך להכניס את התוצאה בסוף הפונק' (יכול להיות ריבוי - [result1 result2]?)

func זה שם הפונק' והקובץ

x זה הפרמטר שאתה מקבל (יכול להיות מערך)

ה-if די ברור אם למדת שפת תכנות אחרת כלשהי

פורסם

ההסבר של מקפליי נכון אבל היה עדיף אם היית פשוט כותב במטלאב help function

פורסם
  • מחבר

function result=h(n)

if(abs(n)<=30)

result=exp(n/10)
else
result=0
end;

i've defined the function as you said, problem is when i enter a vector with one value above 29, the result is just 0. for example:

h([5 75 7]) = 0, instead of [1.6487 0 2.0138]

פורסם

זה אמור לעבוד:

function result = h(n)
result = exp(n/10);
result = result .* (abs(n) <= 30);

ה-; בסוף משפט אומרת למטלאב לא להדפיס למסך את התוצאה.

הנקודה לפני ה-* אומרת למטלאב להכפיל את הוקטורים (או מטריצות) איבר איבר, ולא כפל של אלגברה ליניארית.

פורסם
  • מחבר

ok that works great

now i want to calculate hper as stated above.


function mean = hper(n)
offset = mod(n,5)
A = offset : 5 : 25+offset
hper = sum(h(A))

it works good for plain numbers, but not for vectors (for example hper([1 2 3]) (i'm getting "Colon operands must be real scalars" warning and only one result)

פורסם

כתבתי לך את הפונ' hper מחדש.

אני לא בטוח 100% בנכונות וגם אני לא בטוח שאני מבין מה אתה מנסה לעשות...

function mean = hper(n)
offset = mod(n,5);
jumps = 0:5:25;
A = offset' * ones(size(jumps));
A = A';
B = jumps' * ones(size(offset));
C = A+B;
hper = sum(h(C))

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

מממ... אני לא אפרט כרגע, פשוט תעבור על כל שלב בתוכנית (ותפרק אותם לתתי שלבים) בקונסול של מטלאב.

אם יש משהו לא מובן תשאל.

עריכה: הפתרון הזה מתאים מן הסתם רק ל-n שהוא מספר או וקטור שורה (ולא מטריצה, או וקטור עמודה). כלומר n מהצורה: [a b c...]

פורסם

למה עשית offset טאג ??

הגודל שלו זה 1X1

עריכה*

אופס עכשיו ראיתי שהוא רוצה להכניס ווקטור בתור N

פורסם
  • מחבר

allright thanks !

another thing -

i've got this function (x1) and i want to numerically comute it's fourier transform, X(jw), where w is a frequency vector

this is what i've done and i belive i made a little mess

w = -500*2*pi : 2*pi : 500*2*pi;
dt = 1/1000;
k = [-501:-2 1 : 601] ;


A = x1(dt*k) * real(exp (-j * dt * k' * w));
B = x1(dt*(k+1)) * real(exp (-j * dt * (k+1)' * w));
C = (A + B) * dt / 2;
X = sum(C)

i want X(jw) to be a vector of |w| length, but i'm only getting a scalar..

[attachment deleted by admin]

פורסם

תכתוב בקונסולה

help fft

הנה משהו לדוגמא שעשיתי בפרוייקט לפני שבוע בערך

תנסה להבין


eval(['im = wavread(''rap\' num2str(i) '.wav '');']);
a=im(:,1);
for j=1:5
ra=ceil(rand*(size(a)-600));
pt=a(ra:ra+600);
tmpP=double(pt(:));
Y=fft(tmpP);
Y(1)=[];
tmp = Y.*conj(Y)/600;
%len=sqrt((tmp'*tmp));
counter=counter+1;
p1(:,counter)=tmp'; %p(:,counter)=tmp/len; %WITH NORMALIZATION
end
end
for i=R

יש ב-help->Demos הסבר יותר טוב

פורסם
  • מחבר

the whole point is staying away from premade functions for fourier transforms, integrals , etc'

i

פורסם
  • מחבר

i dont understand this fft thingy

i didnt understand your code - could you write me a simpler one that takes a function and plots it's transform?

ארכיון

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

דיונים חדשים