www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
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
Weitere Fächer:

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.mathebank.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]