WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matrixen definieren, damit sie nicht unbegrenzt anwachsen

 

matlab_anfänger

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2011, 07:41     Titel: Matrixen definieren, damit sie nicht unbegrenzt anwachsen
  Antworten mit Zitat      
Hallo an alle!

Ich sitze jetzt schon sehr lange an diesem Problem und hoffe, dass ihr mir weiterhelfen könnt.

in meinen programm wird die variable x in einer schleife mit drei indizes berechnet, wobei m=1:901, n=1:901 und i=1:24 laufen soll. Leider benötigt matlab sehr sehr lange für die berechnung.
gibt es einen trick, in dem ich die berechnung beschleunigen kann, indem ich die länge der matrixen definiere.


Code:

for m=1:length(x_beobachtung)
for n=1:length(y_beobachtung)
for i=1:24
x=xx_beobachtung(m,n)+r.*sin(phi(i))
end
end
end
 


wäre toll, wenn ihr mir ein paar tipps geben könntet, dieses problem zu beheben.
Danke schon mal im vorhinaus.


_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 21.09.2011, 09:02     Titel:
  Antworten mit Zitat      
Hallo matlab_anfänger,
du kannst eine Matrix wie folgt pre allocieren:
Code:

A = zeros(2,3) % Befüllt eine 2x3 Matrix mit Nullen
A = NaN(2,3) % Befüllt eine 2x3 Matrix mit NaN (Not a Number)
 


Für die Handhabe mit NaN, wird dir die Funktion
Code:
helfen.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2011, 09:23     Titel:
  Antworten mit Zitat      
Danke, für die schnelle Antwort.
Werds gleich probieren.
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2011, 10:59     Titel:
  Antworten mit Zitat      
hab das jetzt so probiert, und meine matrixen vorher definiert. Leider braucht das programm noch immer sehr lange und alles durchzurechnen.
Gibt es vielleicht noch andere möglichkeiten?

Liebe Grüße!
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2011, 13:09     Titel:
  Antworten mit Zitat      
Hi,
welche Dimension hat "r" ?
Was ist xx_beobachtgung(m,n), Matrix? Funktion?

Bist du dir sicher, dass du in der inneren Schleife jedesmal das x überschreiben willst?
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2011, 13:23     Titel:
  Antworten mit Zitat      
Hallo!

r hat die Länge 902; bei xx_beobachtung(m,n) handelt es sich um eine matrix.

was ich eigentlich vorhabe, ist, dass ich bei unteschiedlichen xx_beobachtungen und unterschiedlichen zeitpunkten (i=1:24) immer ein neues x bekomme.

Danke.
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2011, 13:36     Titel:
  Antworten mit Zitat      
Mir ist immernoch nicht ganz klar, was du am Ende willst.

Eine 901*901*24 Matrix?

Wie gesagt im Moment überschreibst du x jedesmal.

Aktuell ist x wohl ein Vektor, der in jedem der 19483224 (901*901*24) Schleifendurchläufe überschrieben wird.
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2011, 13:46     Titel:
  Antworten mit Zitat      
eigentlich will ich x nicht jedesmal überschreiben. wenn möglich will ich am ende einen vekor x, der zu jedem zeitpunkt und an jedem mxn punkt definiert ist.

lg.
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2011, 13:54     Titel:
  Antworten mit Zitat      
Also eine 901*901*24 Matrix?


Wie soll dann z.b. der Punkt (150,100) zum Zeitpunkt 5 bestimmt werden?

Also
m=150
n=100
i=5

Wie soll dieser Wert berechnet werden? Welches Element aus r gehört dazu?
Bei deiner aktuellen Berechnung entseht ein Vektor, du willst wohl aber eine Zahl für jede Kombination von m,n und i.
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2011, 14:02     Titel:
  Antworten mit Zitat      
ja genau, eine eine kombination von i, m, n für jeden x-wert.
nur leider weiß ich nicht, genau, wie ich matlab das sagen soll.

Danke, liebe Grüße!
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2011, 14:07     Titel:
  Antworten mit Zitat      
Ich muss leider nochmal fragen, habe es immernoch nicht verstanden,
zu einem konkreten Punkt, welches Element aus r soll da genommen werden,
r(m) ?, r(n) ?

Code:

x(m,n,i)=xx_beobachtung(m,n)+   -->  r.   <--    * sin(phi(i))
                                                % dieses r ist im Moment noch problematisch, brauchst du für die Berechnung eines Punktes den ganzen Vektor r?
 
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2011, 14:24     Titel:
  Antworten mit Zitat      
nein, soweit ich das verstanden habe, brauche ich für die berechnung eines punktes nur einen wert aus r.
 
Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2011, 14:43     Titel:
  Antworten mit Zitat      
Und wovon ist es abhängig welches r man nun nimmt?
von m? von n? von i? von sonstwas anderem?

Je nachdem wovon das abhängig ist, kann man unterschiedlich leicht vektorisieren, was wiederrum Geschwindigkeitsvorteile bringt.

Dein urpsrüngliches Problem war wohl eher die falsche Berechnung

Code:

x=zeros(901,901,24);
for m=1:901
    for n=1:901
        for i=1:24
            x(m,n,i)=xx_beobachtung(m,n)+r(hier_eintragen_welches_r)*sin(phi(i));
        end
    end
end

 

Wenn du mir verrätst, welchers r zu welchem Punkt gehört, lässt sich das noch vektorisieren.
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2011, 14:45     Titel:
  Antworten mit Zitat      
hallo!

hab das programm jetzt mal mit dem profiler durchlaufen lassen und dieser zeigt mir an, dass matlab die meiste zeit bei

Code:

z=interp2(xx ,yy ,z ,x,y)
 


benötigt. wobei x und y von (m,n,i) abhängig sind.

lg.
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.