Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Aiuto urgente per matlab
mercoledì 17 gennaio 2007 - 13.49
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
bend
Profilo
| Newbie
2
messaggi | Data Invio:
mer 17 gen 2007 - 13:49
ciao a tutti..sono alle primissime armi con matlab e devo programmare questo problema per un esame:
K
an = h /π*∑ f(xk)cos(n2 π*( xk-xmin)/(xmax-xmin)
k=1
K
a0 = h/2* π*∑ f(xk)
k=1
N
F(xk)= a0 /2 + ∑ an cos(n2 π*( xk-xmin)/(xmax-xmin)
n=1
con h=delta
si tratta dell'espansione in serie di fourier.
qui di seguito quello che sono riuscito a programmare,che pero mi da risultati non accettabili.
quali errori potrei aver commesso e come potrei risolverli? grazie a tutti gia da ora.
function[]=fourier();
maxpoints=1024;
terms=6;
fcoef=zeros(1,terms);
[fid,err]=fopen('C:\Programmi\MATLAB7\work\fourier.in','r');
points=fscanf(fid,'%f\n',1);
%terms=points;
x=zeros(1,points);
y=zeros(1,points);
for pnt=1:points;
x(pnt)=fscanf(fid,'%f\n',1);
y(pnt)=fscanf(fid,'%f\n',1);
s=sprintf('%d %2.6f %2.6f ',pnt,x(pnt),y(pnt));
disp(s);
end;
err=fclose(fid);
delta=x(2)-x(1);
norm=1.0d0/pi;
%PART #1
%......
for counter=1:terms;
somma=0.0;
if (counter==1);
for k=1:points;
somma=somma+y(k);
end;
fcoef(1)=delta * somma / (2 * pi);
else;
for k=1:points;
somma=somma + y(k) * cos((counter-1) * 2 * pi * (x(k) - x(1)) / (x(points) - x(1)));
end;
fcoef(counter)=delta * somma /pi;
end;
% s=sprintf('%d %12.6f %12.6f |n',counter,delta,somma);
% disp(s);
end;
[fid,err]=fopen('C:\Programmi\MATLAB7\work\fourier.coe','w');
for counter=1:terms;
fprintf(fid,'|n %3d %12.10f ',(counter-1),fcoef(counter));
end;
err=fclose(fid);
%PART #2
f=zeros(1,points);
[fid,err]=fopen('C:\Programmi\MATLAB7\work\fourier.out','w');
for item=1:points;
f(item)=fcoef(1) / 2;
for n=2:terms;
f(item)=f(item) + fcoef(n) * cos((n-1) * 2 * pi * (x(item) - x(1)) / (x(points) - x(1)));
end;
fprintf(fid,'%12.6f %12.6f %12.6f \n',x(item),f(item),y(item));
end;
err=fclose(fid);
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
gio 18 gen 2007 - 10:25
Ciao,
purtroppo il nostro forum non parla di programmazione Matlab ma di programmazione principalmente .NET. Quindi non sappiamo aiutarti.
Ciao
David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
bend
Profilo
| Newbie
2
messaggi | Data Invio:
ven 19 gen 2007 - 09:17
grazie.dove potrei cercare aiuto?
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 19 gen 2007 - 10:56
>grazie.dove potrei cercare aiuto?
Da quello che so se non è un problema matematico il tuo, Matlab include nel prodotto una guida molto completa che ti aiuta a risolvere questi problemi.
Per quanto riguarda un aiuto, puoi provare a consultare la User Community ufficiale della Mathworks a questo indirizzo (in inglese naturalmente):
http://www.mathworks.com/matlabcentral/
Ciao
David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !