WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Polyfit von 13 640x480 Matrizen

 

chickensalad
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 29.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2011, 16:22     Titel: Polyfit von 13 640x480 Matrizen
  Antworten mit Zitat      
Hallo Leute,
hab hier ein kleine Problem zu bewältigen und zwar habe ich mittels einer Thermographiekamera eine Messreihe von 13 Bilder aufgenommen. Ziel ist es jetzt für jeden Pixel eine Kurve zu approximieren ( also dessen Detektorwerte). Mittels for-Schleifen habe ich das schon gemacht - nur ist hier der Rechenaufwand zu groß.
Meine Frage ist nun wie ich am einfachsten ein Fitting über die 13 Matrizen für jeden Pixel bekomme.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.08.2011, 16:40     Titel:
  Antworten mit Zitat      
Hallo,

es ist zumindest bei mir um Faktor 100 schneller, direkt das Gleichungssystem zu lösen als mit polyfit zu arbeiten:

Code:
rng(0)
tic;
for I = 1:1000
    c = polyfit(1:13, rand(1,13), 2);
end
toc

rng(0)
tic;
A = [((1:13)').^2, (1:13)',ones(13, 1)];
for I = 1:1000
    c = A \ rand(13,1);
end
toc


Warum ist das so? polyfit überprüft intern Argumente, Konditionszahlen etc., und das dauert natürlich.
Natürlich kannst du jetzt aus den vielen Gleichungssystemen ein großes machen, aber ich bezweifle, dass man davon etwas hat.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
chickensalad
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 29.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.08.2011, 10:27     Titel:
  Antworten mit Zitat      
Ah, okay super danke.
Aber rein zum verständnis

nehmen wir an ich hab zwei Matrizen
Code:

a1 = 1 2
        3 4
a2 = 5 6
        7 8
 

als y-Werte und als x werte zb für a1 - 3 und für a2 - 5
Jetzt möchte ich mir jeweils für die Punkte (3/1) & (5/5), für (3/2) & (5/6) usw. mir diese fiten lassen, sodass ich im Endeffekt zwei Matrizen habe mit den Parameter für eine lineare Approximation.
Mein Versuch über die 2 Matrizen & x Werte hatte nicht geklappt und mir nur eine Funktion ausgegeben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.08.2011, 13:00     Titel:
  Antworten mit Zitat      
Hallo,

hier mein Vorschlag für dein konkretes Beispiel:
Code:
x = [1 3]';
VDM = [x, ones(size(x))];
a(:,:,1) = [1 2; 3 4];
a(:,:,2) = [5 6; 7 8];
coeff_const = zeros(size(a,1), size(a,2));
coeff_lin = zeros(size(a,1), size(a,2));
for I = 1:size(a,1)
    for J = 1:size(a,2)
        coeffs = VDM \ squeeze(a(I,J,:));
        coeff_lin(I,J) = coeffs(1);
        coeff_const(I,J) = coeffs(2);
    end
end


Zur einfacheren Verarbeitung habe ich a1 und a2 in einer 3D-Matrix abgespeichert.

Bitte in Zukunft immer mit angeben, was genau du versucht hast, am besten mit Code. Wenn man nicht weiß, was du versucht hast, kann man schlecht sagen, woran es gescheitert ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.08.2011, 13:35     Titel:
  Antworten mit Zitat      
Hallo,

Nachtrag: Vektorisierung ist ja was feines. Die beiden for-Schleifen kann man auch durch eine ersetzen:
Code:
for I = 1:size(a,1)
    coeffs = VDM \ squeeze(a(I,:,:))';
    coeff_lin(I,:) = coeffs(1,:);
    coeff_const(I,:) = coeffs(2,:);
end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.