Verfasst am: 14.04.2015, 21:59
Titel: Letzten Wert je Spalte einer Matrix in seperat speichern?
Hallo liebe Matlab Gemeinde,
mein ergebnis einer ODE45 berechnung gibt mir eine matrix mit 4 spalten und n werten aus. wie kann ich aus jeder spalte den letzten wert auslesen ?
also x ist meine Matix weil die ode45 funktion 4 anfangswerte bekommt und die 4 anfangswerte in 4 Differentialgleichungen gelöst werden und die endwerte zurückgegeben.
gibt es eine fehlermeldung : cannot call or index into a temporary array?
Ich möchte dass in dem Vektor A in einer for schleife alle Endwerte von x(:,1) gespeichert werden für jeden meiner Durchläufe und in vektorB dann alle end werte von x(:,2) sodass ich am ende nur noch die endwerte von 100 durchläufen in 4 verschiedenen Vektoren habe.
Vielen Dank also das mit dem endwert nehmen passt schonmal aber jetzt habe ich das problem dass ich das ganze 100 mal für jeden durchlauf einer while schleife machen möchte und da hänge ich gerade etwas in der luft muss ich dann etwa noch eine for schleife in der while schleife einfügen oder kan ich das irgendwie kombinieren ?
% 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);
Also im endeffect will ich in den VektorA und VektorB alle endwerte für jede der 100 durchläufe gespeichert haben im moment speichert er nur immer den wert des actuellen durchlaufs.
Vielen Dank Jungs und Mädels ihr seid echt spitze keep up the great work !
dadurch das deine schleife rückwärts läuft sorgst du sogar für eine präallokation im ersten druchlauf das ist denke ich unbeabsichtigt aber richtig _________________
Ich habs grade bemerkt habs gerade getestet und funktioniert aber danke für die schnelle Hilfe manchmal hilft das Matlab help command dann doch. okay Ich habs fast jetzt speichert er die 100 Werte alle in einem Zeilenvektor soweit so Gut und die Verteilung wird auch angezeigt. Jedoch bin ich mir nicht ganz sicher ob das stimmt bzw es wird immer ein event bei 0% angezeigt was eigtl nicht sein kann. Kann sich das mal jemand anschauen ? code einfach in matlab und run das sollte klappen. Wär cool wenn sich das mal jemand kurz anschaut.
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 % h = x(:,1); % r = h(end); hist(vektorA,100) hist(vektorB,100) legend('surfaces clean','surfaces cont','clean nurses ','cont nurses');
%legend('boxoff');
function drdt = surclean2334( ~,x,val )
%UNTITLED3 Summary of this function goes here
%D=x1
%I=x2
%DN=x3
%IN=x4
%Nmax= 200;
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.