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 auf kleinen Berich anwenden

 

Caro*

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2010, 10:06     Titel: polyfit auf kleinen Berich anwenden
  Antworten mit Zitat      
Hallo an alle,

ich hab einen größeren Datensatz(x,y) und möchte lineare Regression jeweils immer auf einen kleinen Teil des Datensatzes anwenden.
Mein Code schaut so aus:
Code:

[arbeitsbereich]=sub2ind(size(dd),find(dd>0));
[x,y]=ind2sub(size(a),arbeitsbereich);

for bereich=1:length(x)
   
yp = polyfit(x(1:5)+bereich,y(1:5)+bereich,1);

plot(x,polyval(yp,x),'r+'), hold on
drawnow
axis square
end

dd ist die Matrix aus der die x,y Werte stammen.
Ich möchte also einfach immer über alle Werte drüberlaufen und an der Stelle dann die Regression erhalten. Mir werden aber nur einfache Geraden ausgegebn, die überhaupt nicht erwartet werden.
Kann mir jemand sagen wo mein Fehler liegt?

DANKE


Caro*

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2010, 10:39     Titel:
  Antworten mit Zitat      
ok so funktioniert es schon besser!
Code:
[arbeitsbereich]=find(dd>0.1)
[x,y]=ind2sub(size(a),arbeitsbereich);

for bereich=0:length(x)-1-5
   
yp = polyfit(x(1+bereich:5+bereich),y(1+bereich:5+bereich),1);

plot(x(1+bereich:5+bereich),polyval(yp,x(1+bereich:5+bereich))), hold on
axis square
end
 
Caro*

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.10.2010, 13:10     Titel:
  Antworten mit Zitat      
ok anders ausgedrückt:
mein Problem ist, polyfit und polyval auf ein Array angewand ist ja kein Problem. Aber leider bei einer Matrix: Hier ist fast der agnze Code:
Code:
close all
kern=5;
polyfitbereich=10;
% a= imread('testpic2.png');
a=eye(100);
% subplot(121);
% image(a);
% colormap(gray(256));
% axis square

% Kantendetektion anhand 2.ter Ableitung (zero-crossing)
[dd, kernel] = sdgd_filt2D(a, kern); dd = dd ./(max(dd(:)));
% subplot(121);
% image(dd);
% colormap(gray(256));
% axis square

dd(isnan(dd))=0;    
[x,y]=find(dd<0);
u=sub2ind(size(dd),x,y);
dd(u)=0;
[x,y]=find(dd>0);
u=sub2ind(size(dd),x,y);
dd(u)=1;
subplot(121);
imagesc(rot90(dd));

colormap(gray(256))
axis square
axis off
title(sprintf('%s%2.f\n ','Kernel = ',kern))

[arbeitsbereich]=find(dd>0);
[y,x]=ind2sub(size(a),arbeitsbereich);


subplot(122)
for bereich=0:length(x)-1-polyfitbereich
   
   yp = polyfit(x(1+bereich:polyfitbereich+bereich),y(1+bereich:polyfitbereich+bereich),1);
   plot(x(1+bereich:polyfitbereich+bereich)',polyval(yp,x(1+bereich:polyfitbereich+bereich)))
   hold all,axis square


end
 
Caro*

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2010, 09:19     Titel:
  Antworten mit Zitat      
nix? Bitte Crying or Very sad
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 07.10.2010, 09:59     Titel:
  Antworten mit Zitat      
Hallo

das Problem ist leider nicht so einfach, um es einfach anhand des Codebruchstücks zu verstehen. Ich verstehe nur eins, dass irgendwelche Linien werden falsch gekennzeichnet. Mir ist einfach schwer vorstellbar, was ist daran falsch? Ein Bild vielleicht, welches das verdeutlicht oder lauffähiger Code wären hier sehr hilfreich.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.10.2010, 10:28     Titel: Re: polyfit auf kleinen Berich anwenden
  Antworten mit Zitat      
Hallo Caro,

Zitat:
Ich möchte also einfach immer über alle Werte drüberlaufen und an der Stelle dann die Regression erhalten. Mir werden aber nur einfache Geraden ausgegebn, die überhaupt nicht erwartet werden.
Kann mir jemand sagen wo mein Fehler liegt?

Offenbar sind Deine Erwartungen der Fehler.
Kannst Du sie bitte bitte beschreiben? Wir können sie ja schlecht erraten.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Caro*

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2010, 11:52     Titel:
  Antworten mit Zitat      
Hallo ihr beiden,

ich reduziere das Problem einfach mal auf das elementarste.
Ich brauche eine lineare Regression eines Bildausschnittes.
Will das mit polyfit (1.ten Grades) anstellen. HAb die Matrix zu
einer binären umgewandelt und möchte jetzt wissen wie die Punkte angeordnet sind. Also wenn man einen 3x3 Ausschnitt nimmt. Wie
ist dann die Orientierung der linearen Regression?

Schon mal danke
 
Achi
Forum-Guru

Forum-Guru


Beiträge: 250
Anmeldedatum: 14.04.10
Wohnort: ---
Version: R2007a
     Beitrag Verfasst am: 07.10.2010, 12:11     Titel:
  Antworten mit Zitat      
So in etwa:

Code:

a=round(rand(10));
[x,y]=find(a>0);
yt=polyfit(x,y,1);
rt=polyval(yt,x);
plot(x,y,'+'),hold on
plot(x,rt)
 
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Caro*

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2010, 13:06     Titel:
  Antworten mit Zitat      
oh war das einfach. DANKE
 
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.