Verfasst am: 14.04.2015, 20:06
Titel: Endwerte aus random simulation speichern und histogramm help
Hallo liebe Matlab gemeinde. Danke für die vielen tipps die ich hier aus dem Forum nutzen konnte für mein project. Aber jetzt bin ich an einer Stelle angelangt die mich zum verzweifeln bringt ... meine simulation simuliert ein hospital und reinigung etc und am ende kommt die prozentuale verunreinigung von contaminierten oberflächen und contaminierten Krankenschwestern ( nurses) raus. diese beiden END werte würde ich gerne in für jede simulation in einem vektor speichern und dann daraus ein histogramm erstellen um eine verteilung zu erkennen.
also X-achse contamination in % und Y-achse anzahl der simulationen die diesen wert hatten.
mein code
Code:
function[t,N,D,I] = SImulationhospital % junk function to run it without 2 files
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear variable;
closeall;
clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Surfaces
N = 10000; % numbers of surfaces
d = 9800;
i = 200; % contaminated surfaces
D = d/N;
I = i/N;
% clean surfaces
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%nurses
NN = 825; % number Nurses
in = 325; % contaminated nurses
dn = 500; % decontaminated nurses
IN = in/NN;
DN = dn/NN;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
plot(t,x(:,1),'r','linewidth',2) hold on
plot(t,x(:,2),'g','linewidth',2) hold on
plot(t,x(:,3),'b','linewidth',2) hold on
plot(t,x(:,4),'k','linewidth',2) hold on
grid on
xlabel('days') ylabel('fractions of surfaces & nurses')
M = max(x);
N = min(x);
fprintf('maxima %g',xz);
fprintf('minima %g',N);
n = n-1;
end
Wenn man den code laufen lässt kommen also 100 simulationen zustande ich würde jetzt gerne von den 100 simulationen die endwerte speichern von allen 4 gleichungen und ein histogramm für 2 machen also die verteilung von anzahl der jeweiligen endergebnisse für oberflächen und nurses.
aber das funktioniert nicht und ich hab keine ahnung wie man werte auslesen lässt und in einem vektor dann speichert. -.- bitte um Hilfe oder link zu einer erklärung ( hab schon überall gesucht aber ich formuliere wohl meine frage nicht richtig jedenfalls kommt beim suchen nix bei raus )
Vielen Dank für alle die sich hier so intensiv bemühen ihr seid spitze !
ich würde die werte, ich glaube hier x, in einem cell array speichern. dann hast du am ende alle. wie man cell arrays adressiert steht in der doc. dann könnte man mit cellfun arbeiten denke ich. alternativ kann man auch die berechnung deiner werte die du haben willst also s1 bis s4 in die schleife zihen und diese in einer matrix speichern. kleine anmerkung. ich würde auch hier cell arrays benutzen da das verstecken eines index im namen immer schlecht ist.
_________________
Vielen Dank ich werde das gleich mal morgen früh ausprobieren. Bin leider noch totaler anfänger und musste mir bis jetzt alles selber zusammenreimen. Was meinst du mit indicis im Namen verstecken ?
% Dies löscht die Variable mit Namen "variable": clear variable;
% Diese Variable existiert hier aber noch gar nicht. Vielleicht meinst Du: % clear variables % Aber am Anfang einer Funktion existieren gar keine Variablen, also bringt % ein clear hier gar nichts.
Die MAX Funktion ist allerdings nicht glatt. Das ist ein ernstes Problem, denn ODE45 kann genauso wie auch die anderen ODE-Integratoren von Matlab nur glatte Funktionen integrieren. Unstetigkeiten in der zu integrierenden Funktion reduzieren entweder die Schrittweite so stark, dass die Unstetigkeit durch die stark zunehmenden Rundungsfehler verdeckt wird - dann ist das Ergebnis aber ebenfalls von rundungsfehlern dominiert. Oder der Integrator stoppt mit einer Fehlermeldung. Wenn man großes Pech hat, hüpft der Integrator zufällig über die Unstetigkeitsstelle und das Ergebnis ist sehr unzuverlässig ohne dass man das Problem bemerken kann.
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.