www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Matlab" - Daten in Matrix aufreihen
Daten in Matrix aufreihen < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Daten in Matrix aufreihen: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 11:16 Fr 25.09.2009
Autor: LN-

Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt: http://www.gomatlab.de/viewtopic,p,29982.html#29982

Hallo,

ich bin ziemlicher Matlab Neuling und bisher konnte ich jedes Problem mit Googel etc lösen. Nur dieses lässt mir einfach keine Ruhe.

Hier der Code:

A=fem.sol.u;
B=fem.sol.tlist;
C=fem.mesh.p;
D=1.58e-11;    
[mc,nc]= size(C');
[ma,na]=size(A);
A(mc+1:ma,:)=[];
A(:,na+1)=C';
E=sortrows(A,na+1); %sortieren nach na+1
[me,ne]=size(E);
Tabelle=B;
Tabelle(2:me+1,ne-1)=0; %Nullen setzen
[mt,nt]=size(Tabelle);
hx=E(:,ne);
for f=E(:,1:ne-1)  
    n=1:ne-1
    grad=gradient(f,hx)
    Tabelle(2:mt,n)=grad;
end

Ich habe Daten aus Femlab exportiert, daraus Matrizen erstellt, gekürzt, zusammengefügt und nach der letzten Spalte sortiert.
Dann wird eine Tabelle erstellt, die erste Zeile ist durch B definiert und der Rest wird mit Nullen aufgefüllt, damit ich später etwas einfügen kann.
Dann wird hx definiert als die letzte Spalte von E
und nun kommt mein Problem: ich brauche eine Schleife, welche von der 1. bis zur vorletzten Spalte von E jeweils die Spalte nimmt und dann den gradienten abhängig von hx berechnet (mit einzel extrahierten Spalten funktioniert es, ich brauch es aber der Reihe nach für alle Spalten.)
Das klappt auch soweit noch, dann soll er es aber in "Tabelle" schreiben und zwar beginnend in der 2. Zeile und jeweils eine weiter nach rechts. Deswegen habe ich n=1:ne-1 gesetzt. Allerdings funktioniert dies nicht. Kann mir hier jemand helfen, wie ich die Werte nacheinander eingereiht bekomme? Ich habe bereits versucht eine zweite Schleife in die erste zu integrieren, dann schreibt er aber nur den jeweils letzten berechneten Gradienten in alle Spalten.

        
Bezug
Daten in Matrix aufreihen: Antwort
Status: (Antwort) fertig Status 
Datum: 11:47 Fr 25.09.2009
Autor: Frasier


> ...dann soll er es aber in
> "Tabelle" schreiben und zwar beginnend in der 2. Zeile und
> jeweils eine weiter nach rechts. Deswegen habe ich n=1:ne-1
> gesetzt. Allerdings funktioniert dies nicht. Kann mir hier
> jemand helfen, wie ich die Werte nacheinander eingereiht
> bekomme? Ich habe bereits versucht eine zweite Schleife in
> die erste zu integrieren, dann schreibt er aber nur den
> jeweils letzten berechneten Gradienten in alle Spalten.  

Hallo,
kannst du mal ein konkretes Beispiel geben, wie das aussieht/aussehen soll?
lg
F.

Bezug
                
Bezug
Daten in Matrix aufreihen: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 12:49 Fr 25.09.2009
Autor: LN-

Hallo,

Danke für die Reaktion!

das soll so aussehen:
1. Zeile die Werte aus B, da stehen in dem Fall Zahlen von 0-250 drin und dann kommen hier 16 weitere Zeilen, in welche pro Spalte (welche von 1-n gezählt wird) der 16 zeilige grad-Vektor (hier als gradf eingegeben, wobei die Werte pro Zeile natürlich unterschiedlich sind) eingetragen werden soll
also:
[mm] \begin{matrix} 0 & 1 & 2 &3 &4 & 5 & 6 & 7 & ...\\ gradf1 & gradf2 & gradf3 & gradf4 & gradf5 & gradf6 & gradf7 & gradf8 & ...\\ gradf1 & gradf2 & gradf3 & gradf4 & gradf5 & gradf6 & gradf7 & gradf8 & ...\\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & ...\\ \end{matrix} [/mm]


Die Sache funktionert wenn ich eine zweite Schleife einbaue:

for f=E(:,1:ne-1)
    for n=1:ne-1
        grad=gradient(f,hx);
        Tabelle(2:mt,n)=grad;
    end
end

und dann wird halt überall die letzte Lösung von grad eingefügt. Ich will aber eben immer das zu f gehörende Ergebnis von der jeweilgen Spalte aus E fortlaufend eingetragen haben.

Ich hoffe das war so verständlich.
Vielen Dank,
Gruß Ellen


Bezug
                        
Bezug
Daten in Matrix aufreihen: Antwort
Status: (Antwort) fertig Status 
Datum: 19:41 Fr 25.09.2009
Autor: Frasier

Hallo,
ehrlich gesagt verstehe ich das nicht...
Kannst du mal einen Code schreiben, den ich ausführen kann?
Z.B. sowas:

E=rand(11);
B=0:11;
ne=12;
mt=12;
hx=0.1;
Tabelle(1,:)=B;
for f=E(:,1:ne-1)
    for n=1:ne-1
        grad=gradient(f,hx);
        Tabelle(2:mt,n)=grad;
    end
end

lg
F.

Bezug
                                
Bezug
Daten in Matrix aufreihen: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 09:12 Mo 28.09.2009
Autor: LN-

Hallo,

Ah klar, ich verstehe, du hast natürlich meine Simulationsdaten nicht...
Hier kommt der Code verallgemeinert:


B=(0:19);
E=rand(16,20);
[ma,na]=size(E)
C=(1:16)
E(1:16,na+1)=(C')
[me,ne]=size(E);
Tabelle=B;
Tabelle(2:me+1,ne-1)=0;
[mt,nt]=size(Tabelle);
hx=E(:,ne);
for f=E(:,1:ne-1)
   n=1:ne-1
   grad=gradient(f,hx);
   Tabelle(2:mt,n)=grad;
end


ich hoffe, jetzt ist es ersichtlicher! Vielen Dank für die Hilfe!
mfg Ellen

Bezug
                                        
Bezug
Daten in Matrix aufreihen: Antwort
Status: (Antwort) fertig Status 
Datum: 10:12 Mo 28.09.2009
Autor: Frasier

Hey, diese Code läuft aber nicht.
grad ist 16x1, n aber 1x20 groß, das passt nicht.

Hattest du es nicht schon mit 2 Schleifen?
B=(0:19);
E=rand(16,20);
[ma,na]=size(E);
C=(1:16);
E(1:16,na+1)=(C');
[me,ne]=size(E);
Tabelle=B;
Tabelle(2:me+1,ne-1)=0;
[mt,nt]=size(Tabelle);
hx=E(:,ne);
for f=E(:,1:ne-1)
    for n=1:ne-1
        grad=gradient(f,hx);
        Tabelle(2:mt,n)=grad;
    end
end

lg
F.

Bezug
                                                
Bezug
Daten in Matrix aufreihen: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 10:31 Mo 28.09.2009
Autor: LN-

Hallo,

ja, n soll nur die Spalten zählen, es soll angefangen in Spalte 1 bis in diesem Beispiel Spalte 19 (in 20 steht nur der Abstandsparameter) jeweils eine Spalte weiter grad mit 16x1 eingefügt werden. Und zwar begonnen in der 2. Zeile, weil in der ersten ja bereits die Daten aus B stehen.
n soll keine Matrix sein, sondern nur angeben, dass in Spalte 1 bis eben in Spalte 19 jeweils nacheinander Einträge erfolgen sollen.
Ich habe es auch mit 2 Schleifen schon versucht, allerdings trägt er mir dann nur das zuletzt berechnete Ergebnis für grad in alle Spalten ein und ich möchte ja in jeder Spalte ein anderes Ergebnis stehen haben, nämlich das, das zu der jeweiligen Spalte in E gehört.
Irgendwie klappt es nicht, dass jeweils eine Spalte weitergesprungen wird. :-/ gibt es dafür evt. einen anderen Befehl?
Danke für die Hilfe, das ist echt super, ich steh voll auf dem Schlauch...

Gruß Ellen

Bezug
                                                        
Bezug
Daten in Matrix aufreihen: Antwort
Status: (Antwort) fertig Status 
Datum: 10:57 Mo 28.09.2009
Autor: Frasier

Ah, ich glaube ich verstehe.
Kannst du aus dem n nicht einfach einen Spaltenzähler machen:

B=(0:19);
E=rand(16,20);
[ma,na]=size(E);
C=(1:16);
E(1:16,na+1)=(C');
[me,ne]=size(E);
Tabelle=B;
Tabelle(2:me+1,ne-1)=0;
[mt,nt]=size(Tabelle);
hx=E(:,ne);
n=1;
for f=E(:,1:ne-1)
    grad=gradient(f,hx);
    Tabelle(2:mt,n)=grad;
    n=n+1;
end

lg
F.

Bezug
                                                                
Bezug
Daten in Matrix aufreihen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:24 Mo 28.09.2009
Autor: LN-

Hallo,

Wow, cool! Das klappt! Da war ich wohl einfach auf der falschen Fährte, ich dachte, ich muss das Ende von n definieren, aber ich glaube, dadurch dass das Ende von f schon definiert ist, ist auch das Ende von n gegeben...

Vielen, vielen Dank! Jetzt kann ich endlich weitermachen...

Gruß Ellen

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de