Hallo zusammen, kann mir bitte jemand weiterhelfen!
Also ich habe eine tabelle und möchte aus den werten einer spalte summen bilden und diese in eine neue tabelle schreiben.
Es sollen jeweils 6 werte summiert werden und ausgegeben werden.
Also quasi:
b1=a1+a2+a3+a4+a5+a6
b2=a7+a8+a9+a10+a11+a12
b3=a13+a14+a15+a16+a17+a18 usw.
kann man das automatisieren?
vieln dank und lg
pebbles1988
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 26.11.2008, 15:29
Titel:
Wenn du die Werte in einer Tabelle hast, würde ich es mit einer Schleife versuchen.
(Ich kenn das jetzt nur im c++ code, da ich selbst noch nicht soviel mit Matlab gemacht hab, aber das in Matlab umschreiben ist bestimmt nicht schwer):
also in etwa:
int b[];
int a[];
int i=0;
int j=0;
while (i<b.size)
{
for(j=0;j<6;j++)
{ b[i]=+a[j];}
i++;
}
und dann kannst du ja wieder eine Schleife machen um es dann nachher in einer Tabellenform ausgeben zu lassen.
while (i<b.size)
{
//b[i] in Tabellenform
i++;}
Ich hoffe, dass du zumindest mit der Grundidee etwas anfangen kannst^^
LG
Gast
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 26.11.2008, 18:01
Titel:
Man könnte auch in Matlab mit Schleifen arbeiten, man wird aber lieber darauf verzichten und z.B die Funktion sum benutzen:
Code:
% Wieviele Zeilen soll die Testtabelle haben?
tzeilen=30;
% Zusaetzliche Spalte fuer die Summen anfuegen
tabelle(:,tspalten+1)=NaN;
% Tun wir so, als wuessten wir nichts von der Testmatrix % Wieviele Zeilen hat sie?
nmax=size(tabelle,1);
% Zusaetzliche Spalte fuer die Summen anfuegen
tabelle(:,size(tabelle,2))=NaN;
% In welcher Spalte soll summiert werden?
summespalte=1;
% Ueber wieviele Zeilen soll jeweils summiert werden?
summenzeilen=10;
% Liste anlegen, in der steht von wo bis wo summiert werden soll % Muster: [von_1 bis_1 von_2 bis_2...]
i=cumsum(repmat([1 summenzeilen-1],1,nmax/summenzeilen));
% Eingene Funktion anlegen, die mit arrayfun benutzt werden kann % Sie bekommt als Parameter ein Element der Liste i und summiert % von diesem bis zum naechsten Element
summe=@(n)sum(tabelle(i(n):i(n+1),summespalte));
% Elemente für die Uebergabe an die Funktion summe sind diejenigen mit % ungeradem Index (alle von-Werte)
j=1:2:2*nmax/summenzeilen;
% Summen bilden und an die Tabelle anhaengen
tabelle(summenzeilen:summenzeilen:nmax,tspalten+1)=arrayfun(summe,j)'
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.