Matlab obere Punkte nicht extrapoliren

xycgerry

Lieutenant
Registriert
Nov. 2010
Beiträge
920
Hallo,

ganz einfach gesagt möchte ich alle Punkte oberhalb meiner Grenzkennlinie abschneiden, also das er diese Querverbindunglinien nicht einfügt.
Ich Plotte das mit trisurf, und habe schon andere fit-Arten durchprobiert, was kann ich sonst noch tun?
MFG
 
Du musst nur die Triangles finden, die überhalb der Kurve liegen (z.B. der Schwerpunkt) und rauswerfen.
Code:
tri=[(1:100)' (1:100)' (1:100)'];
x=rand(100,1);
y=rand(100,1);% sind bekannt
f=@(x)100./x;%Sei die Funktion der Grenzkennlinie
meanx=mean(reshape(x(tri(:),[],3),2);
meany=mean(reshape(y(tri(:),[],3),2);
tri(f(meanx)<meany)=[];
trisurf(tri,x,y);
 
Hallo Vielen Dank, ich versteh was du meinst, aber nicht wie ich es umsetzen kann.
Meine Punkte liegen halt als Drehzahl/Drehmoment vor
Code:
tri = delaunay([Data.nRtr],[Data.trq])

und meine Kennlinie auch nur als maximaler Drehmoment wert.
Wie kann ich die Punkte oberhalb der Kennlinie da löschen?
MFG
 
Zuletzt bearbeitet:
Hallo, leider sieht es bei mir nach dem einsetzen deiner Formel immer noch gleich aus wie im ersten Beitrag.
nRtrDes und trqelDes sind meine simulierten Betriebspunkte, und die iD_RelAbw das was ich in der z- Achse darstelle.
a.n_Kennfeld
a.n_Kennfeld sind die Punkte meiner Grenzkennlinie und sehen geplottet so aus wie das Bild im Anhang


Code:
plot(a.n_Kennfeld(end, : ), a.T_Kennfeld(end,: ));
tri = delaunay([Data.nRtrDes],[Data.trqElDes]);

tri(all(ismember(tri,[a.n_Kennfeld(end,:) a.n_Kennfeld(end,:)]),2),:)=[];
figure()
trisurf(tri,[Data.nRtrDes],[Data.trqElDes],[Data.iD_RelAbw]);
[\Code]

Was habe ich falsch gemacht, müsste das nicht so funktionieren wie du sagst?
Danke schonmal für die Hilfe.[ATTACH=full]713373[/ATTACH]
 
Ok, im Code hab ich T statt N in Zeile 4 komischerweise richtig, und wenn das Surf Bild gleich aussieht dann werden doch garkeine Dreiecke überschrieben oder?
Was meinst du mit Indizes? Also das gibt ja nur schon eine einzelne linie, meinst du ich muss die punkte einzeln angeben?
MFG
 
Zuletzt bearbeitet:
Die Idee ist, dass die Dreiecke, die du nicht zeichnen willst, alle drei Ecken auf den Punkten haben, die deine Kurve beschreibt. tri enthält die Indizes für die Punkte der Dreiecke, das heißt, entweder du mappst die Indizes auf die Punkte und vergleichst dann (Achtung Fließkommarundung) oder du mappst die Punkte der Kurve auf deren Indizes.
 
Hab es jetzt geschafft, für jeden der das gleiche Problem hat , ich hab das tri Array einzeln durchdebuggt und gelöscht und so herausgefunden welche Dreiecke ich löschen muss.
 
Zurück
Oben