Vinnaren i pepparkakshustävlingen!
2012-03-11, 00:36
  #1
Medlem
LeBlancs avatar
Hej Kära FB:are,

Nu var det längesedan jag använde mig av matlab och det jag (knappt) kunde tidigare verkar vara som bortblåst! Jag har två vektorer, säg w och v, som ger en massa 'scatter' i ett koordinatsystem. Jag vill anpassa alla dessa punkter till en linje (e^ liknande kurva) men kommer inte ihåg hur jag går tillväga. Någon som har lust att färska upp mitt minne?
Citera
2012-03-11, 00:43
  #2
Medlem
Minsta kvadratmetoden! Menar du att den ena vektorn utgör x-koordinater och den andra y-koordinater? Förmodar att du vill hålla dig i R2. Har en kod på det där någonstans, kan försöka hitta...
Citera
2012-03-11, 00:50
  #3
Medlem
LeBlancs avatar
Exakt, vore väldigt trevligt om du kunde skicka den . Ja, R2 räcker bra.
Citera
2012-03-11, 01:02
  #4
Medlem
Jag har använt ett litet gäng function-filer, men detta är den del som utför minsta kvadrat-anpassningen. Jag har ursprungligen en N x 2 matris, "points", där den första kolumnen utgör x-koordinater och den andra y-koordinater. Vektorn "degree" är gradtalet på polynomet du vill anpassa (det kommer vara av typ maclaurinpolynom). Sen får du ut en ny vektor, "coeffs" som du slutligen plottar!

x = points(:,1);

y = points(:,2);

N = degree+1;

A=zeros(length(x),N);

for n = 1:N
A(:,n)=x.^(N-n);

end

coeffs = A\y;

% Här plottar jag polynomet, minns dock inte exakt vad "polyval" gör...

x_plot = min(points(:,1)):0.5:max(points(:,1));

y_plot = polyval(coeffs,x_plot);
plot(x_plot,y_plot)
Citera
2012-03-11, 01:10
  #5
Medlem
LeBlancs avatar
Mina vektorer ligger i en annan fil och det ser lite annorlunda ut, men med din hjälp ska jag nog lyckas pussla ihop det. Förhoppningsvis slipper jag matlab framöver

Tack för hjälpen!
Citera
2012-03-11, 01:12
  #6
Medlem
Ja, det är klart en god grund i alla fall. MatLab kan vara ett helvete ibland så jag önskar dig lycka till, glad att kunna hjälpa!
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback