Verfasst am: 15.01.2011, 02:55
Titel: Ansatz beim Plot
Moin, habe ein Problem. Ich bin gerade dabei mich mit Matlab anzufreunden. Und wollte das Matlab, ein paar Rechnungen für mich macht und diese dann Plotet jedoch habe ich ein kleines Problem.
Die Variablen
d_p_umg0, MesspDpU, dp60, F bestehen aus mehreren Werte die ich gemessen habe. Nun möchte ich mit denn Formeln alle für alle variablen einen wirkungsgrad , einen massenstrom ...
Die Ergebnisse würde ich dann gerne ploten.
nun stecke ich gerade bei
??? Error using ==> mpower
Matrix must be square.
Error in ==> labor at 72
expansionszahl=(kapa*((tau^(2/kapa))/(kapa-1))*(1-(tau^((kapa-1)/kapa)))/(1-tau))^0.5
% von mbar in Pa
MesspDpU(:,1)=MesspDpU(:,1)*100;
d_p_umg0(:,1)=d_p_umg0(:,1)*100;
dp60(:,1)=dp60(:,1)*100;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
wenn du elementweise multiplizieren, potenzieren, oder im allgemeinen eine Rechenoperation ausführen möchtest musst du den Punktoperator verwenden. Siehe dieses Beispiel:
Code:
vec = [11; 22; 33];
vec^2% = Matrixmultiplikation-->Fehler, da Matrixdimensionen nicht stimmen
vec.^2% jedes Element wird potenziert-->Richtig
% von mbar in Pa
MesspDpU(:,1)=MesspDpU(:,1).*100;
d_p_umg0(:,1)=d_p_umg0(:,1).*100;
dp60(:,1)=dp60(:,1).*100;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
jetzt muß ich die sachen nur noch ploten, also Stuzenarbeit zum Massenstrom.
ich glaube ich mu0 es so machen plot(Stuzenarbeit(:,1),Massenstrom(:,1))
gibt es eine funktion die gleich die Regression zeichnet ?
es gibt soweit ich weiss keine Funktion die die Regression automatisch, anhand der x- und y-Daten, mit in den plot zeichnet (zumal ja auch entscheident ist was für eine Art Regression du möchtest (Type,Grad)). Du kannst jedoch mit dem
ok vielen dank, läuft jedoch verstehe ich einfach nicht warum er beim zweiten Graphen keine Regression machen möchte... es ist bestimmt ein ganz dummer Fehler ......sitze schon seit 2h dran
p_umg=[101330101320]; % Umgebungsdruck In Pa
ra=0.15; % Radius außen in m
ri=0.11; % Radius innen in m
T_umg=[294.3787294.2925]; % Temperatur der Umgebung
Mv=0.22; % Störmoment
l=0.55; % Hebelarm in m
alpha=0.992; % Durchflusszahl
kapa=1.4;
R=287.058; % Gaskonstante
% von mbar in Pa
MesspDpU(:,i)=MesspDpU(:,i).*100;
d_p_umg0(:,i)=d_p_umg0(:,i).*100;
dp60(:,i)=dp60(:,i).*100;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%% Ergebnisse %%%%%%%%%%%%%%%%%%%
MesspDpU
d_p_umg0
dp60
F
MesspDpU
d_p_umg0
dp60
tau
expansionszahl
Ad
d_umg
volumenstromD
p0
d0
volumenstrom0
ua
lieferzahl
F
Mw
Pv
Pw
Pi
p6
T0
Stuzenarbeit
massenstrom
Yi
Druckzahl
wirkungsgrad
Leistungszahl
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%% Plot %%%%%%%%%%%%%%%%%%%
%figure grid hold on
p=polyfit(volumenstrom0(:,1),Stuzenarbeit(:,1),4);
f=polyval(p,volumenstrom0(:,1));
plot(volumenstrom0(:,1),Stuzenarbeit(:,1),'o',volumenstrom0(:,1),f,'-','Color','red','MarkerFacecolor','green')
das Probem ist, dass dein Vektor "(volumenstrom02(:,2)" ein NaN enthält, so dass polyfit als Ergebnis nur NaN's ausgibt.
Wie du das lösen möchtest musst du wohl selber lösen. Du könntest z.B. diesen Wert durch die benachbarten interpolieren, oder für den fit diesen einen Wert löschen und mit den restlichen Werten die Regression berechnen. Letzteres würde z.B. so funktionieren:
Code:
hold on
p=polyfit(volumenstrom0(:,1),Stuzenarbeit(:,1),4);
f=polyval(p,volumenstrom0(:,1));
plot(volumenstrom0(:,1),Stuzenarbeit(:,1),'o',volumenstrom0(:,1),f,'-','Color','red','MarkerFacecolor','green')
Es ist eigentlich nur noch eine Verständnis Frage.
Ganz am Anfang habe ich eine Matrix 21x2 Definiert
Die d_p_umg0
Im Grunde brauche ich denn Wert 0 ganz am Ende also bei d_p_umg0(21,2) nicht bei der Berechnung. Kann ich bei der Definition nicht etwas anderes Hinschreiben ( end ) oder so, wodurch dieser Wert bei der Berechnung keine Rolle mehr spielt.
lg
Edit: Ok ich komme echt nicht mehr weiter es kann doch nicht so schwer sein eine Legende zu ändern. Er macht es bei mir nacheinander. Zu erst Punkt 1 , dann Regression, dann Punkt zwei. Ich habe alles Probiert....
Help....
und eine kleinigkeit, was muß ich tun damit Regression nicht mehr in der Legende angezeigt wird ?
Code:
figure grid hold on
p=polyfit(volumenstrom0(:,1),Yi(:,1),4);
f=polyval(p,volumenstrom0(:,1));
ha=plot(volumenstrom0(:,1),Yi(:,1),'o',volumenstrom0(:,1),f,'-','Color','red','MarkerFacecolor','green')
Eine goolge Suche hätte dich auch schnell an das Ziel geführt!
Du könntest in deinem Code auch folgende Zeilen am ENDE einfügen um es etwas drekig zu basteln (jedoch ist die erste Lösung viel besser, da hier nur die Linie in der Legend Box gelöscht wird, aber die Legendbox gleich groß bleibt):
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.