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

Block Toeplitz Toeplitz Block Matrix (BTTB)

 

emerand
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 11.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2013, 10:40     Titel: Block Toeplitz Toeplitz Block Matrix (BTTB)
  Antworten mit Zitat      
Hallo!

Ich versuche allgemein BTTB- Matrizen in Matlab zu schreiben. So in der Form:

[a b c d;
b a b c;
c b a b;
d c b a]

wobei a, b, c und d auch Toeplitz Matrizen von derselben Dimension sind.
Ich wäre dankbar für jede Hilfe.

emerand
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 05.06.2013, 13:20     Titel: Re: Block Toeplitz Toeplitz Block Matrix (BTTB)
  Antworten mit Zitat      
Hallo emerand,

Was hast Du bisher versucht und welche Schwierigkeiten sind aufgetreten? Dies würde wahrscheinlich erklären, was die eigentliche Frage ist.

Hast Du schon den Code von toeplitz.m angeschaut?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
emerand
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 11.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2013, 17:52     Titel:
  Antworten mit Zitat      
Danke erst mal für die Antwort!

Also ich habe eine Matrix mit (variable) Dimension nxm:
Zum Beispiel:
Code:

n = 4;
m = 5;
M = rand(n,m);


Aus jede Zeile der Matrix M soll eine Toeplitz Matrix gebildet werden:

Code:

A = toeplitz(M(1,:));
B = toeplitz(M(2,:));
C = toeplitz(M(3,:));
D = toeplitz(M(4,:));


Nun soll aus den Toeplitz Block Matrizen A, B, C und D eine Block-Toeplitz Toeplitz-Block Matrix gebildet werden:
Die BTTB-Matrix soll dann so aussehen

[A B C D;
B A B C;
C B A B;
D C B A];

Natürlich kann ich es genauso schreiben in matlab aber wenn die Dimension (n und m) der Matrix großer wird, wird es anstrengend.
Deswegen soll so geschrieben werden dass es nur noch von n und m abhängig ist.

Vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 05.06.2013, 18:34     Titel:
  Antworten mit Zitat      
Hallo emerand,

Wenn es Dich beruhigt: Das ist eine sehr spannende Frage!
Da muss ich erstmal drüber nachdenken...

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 05.06.2013, 21:45     Titel:
  Antworten mit Zitat      
Hallo emerand,

Yupp, es geht:
Code:
n = 4;
m = 5;
M = rand(n,m);
C = cell(1, n);
for k = 1:n
  C{k} = toeplitz(M(k, :));
  % For testing: C{k} = k * ones(m);
end
index = toeplitz(1:n);
Result = cell2mat(C(index));

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
emerand
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 11.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2013, 22:59     Titel:
  Antworten mit Zitat      
Super!
Danke schön Jan
Aber ich habe noch eine Frage. Gibt es eine Möglichkeit der Code ohne for-Schleife zu schreiben?

nochmal Danke
mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 06.06.2013, 10:15     Titel:
  Antworten mit Zitat      
Hallo emerand,

Ja, man kann alles ohne Schleifen schreiben. Aber das wäre aber massiv häßlicher und deutlich aufwändiger. Zudem gehe ich davon aus, dass es auch langsamer sein wird.

Was ist also das Ziel beim Entfernen der Schleifen?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
emerand
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 11.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2013, 13:42     Titel:
  Antworten mit Zitat      
>>Ja, man kann alles ohne Schleifen schreiben. Aber das wäre aber massiv häßlicher und deutlich aufwändiger. Zudem gehe ich davon aus, dass es auch langsamer sein wird.

Wenn es so ist, dann hat es sich erledigt. Ich habe gedacht dass es ohne die for Schleife schneller sein wird.

Vielen Dank noch mal
Gruß, Emerand
Private Nachricht senden Benutzer-Profile anzeigen
 
emerand
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 11.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2013, 16:59     Titel:
  Antworten mit Zitat      
Hallo Jan!

Mich interessiert doch wie eine vektorisierte Version des Codes aussieht.
So kann ich ein Vergleich machen und meine Matlab Kenntnisse erweitern.

Vielen Dank
Emerand
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.06.2013, 09:30     Titel:
  Antworten mit Zitat      
Hallo emerand,

Wegen der Komplexität des benötigten Algorithmus würde ich eine Programmierzeit von etwa 1 bis 2 Stunden veranschlagen, bis dies effizient und hübsch implementiert und ausgiebig getestet ist. Mir persönlich ist das zuviel Aufwand.

Dies beinhaltet aber eine weitere wchtige Programmier-Strategie: Man muss abwägen, ob zusätzliche Optimierungen des Codes so viel Laufzeit einbringen werden, dass die Programmierzeit wieder ausgeglichen wird. Ich habe schon viele Copdes gesehen, die in hundert Arbeitsstunden so lange optimiert wurden, dass der erreichte Grad an Unübersichtlichkeit weiter Änderungen/Anpassungen unmöglich macht und das Debuggen Stunden kostet. Das Programm lief dann zwar dreimal so schnell, aber das waren auch nur wenige zehntel Sekunden Gesamtzeit. Ausserdem kommen dreimal so schnelle Rechner in wenigen Jahren von alleine auf den Markt.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
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.