Hallo,
ich habe einen Surface fit den ich mir nun als Matrix darstellen lassen möchte.
Fittype ist `poly22`, ich kann mir die Funktion auch ausgeben lassen und lautet wie folgt: ans = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 .
Wie schaffe ich es jetzt mir mit dieser Funktion und den zugehörigen Koeffizienten eine Matrix mit den Z-Werten zu erstellen? (x und Y Werte sollen die gleichen bleiben wie im Fit) Ich möchte im Prinzip nur aus meiner gefitteten Oberfläche die Werte herauslesen können.
Probiert habe ich folgendes:
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Er zeigt mir an Matrix dimensions must agreed. Bei einem Curvefit funktioniert diese Variante, sodass ich dann einfach in einer Schleife x Durchlaufen lasse und die Funktion mir den y Wert ausrechnet. Aber in der 3 Dimensionalen als Oberfläche funktioniert dies leider nicht. Leider kann ich den kompletten Code nicht hochladen, da ich für die Fittingmatrix eine CSV. Datei einlese und verwende. Auf die feval Funktion bin ich auch schon gestoßen nur weiß ich nicht so Recht was für Argumente ich da einsetzten soll.
Aber in der 3 Dimensionalen als Oberfläche funktioniert dies leider nicht.
Was genau funktioniert nicht? feval? Es gibt ein feval speziell für surface fits, also sollte es auch funktionieren.
Zitat:
Leider kann ich den kompletten Code nicht hochladen, da ich für die Fittingmatrix eine CSV. Datei einlese und verwende.
.csv zippen und anhängen?
Zitat:
Auf die feval Funktion bin ich auch schon gestoßen nur weiß ich nicht so Recht was für Argumente ich da einsetzten soll.
Ich würde die Syntax z = feval(sfun,[x,y]) mit den x-y - Werten, die du einsetzen willst, versuchen. Wenn das nicht klappt, hilft am ehesten ein reproduzierbares Beispiel.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Hallo, ersteinmal vielen vielen dank für die schnelle Hilfe und zahlreichen Tipps. Ich denke ohne ein Beispiel komme ich hier nicht weiter, deshalb habe ich den Code nochmals komplett eingefügt und zudem noch eine CSV. die eingelesen wird. Feval erwartet im Argument den fittype oder sfit? Die unterscheidung der beiden funktionen sind mir leider nicht ganz klar.
Code:
%Mein Programm
filename = 'test.csv';
T = readmatrix(filename, 'NumHeaderLines', 52); % Einlesen der csv. Datei ab Zeile 53.
length_y=length(T(:,1)); % Laenge y_Richtung
length_x=length(T(1,:)); % Laenge x_Richtung
x=zeros(1,length_x);
y=zeros(1,length_y);
z_real=zeros(1,length_x); % Array fuer das Realprofil
z_fit=NaN(1,length_x); % Array fuer das Referenzprofil an das gefittet werden soll
wobei XY eine Matrix mit 2 Spalten ist, 1. Spalte x-, 2. Spalte y-Werte.
[x,y] ist ein langer Zeilenvektor. Wenn x und y die gleiche Länge hatten (was aber nicht der Fall ist), dann könntest du mit [x', y'] die benötigte Matrix erstellen.
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Einstellungen und Berechtigungen
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
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.