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

Variablen versch. Dimensionen ohne for-Schleife verknüpfen

 

rolewinski
Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 10.02.10
Wohnort: Ingolstadt
Version: R2009b
     Beitrag Verfasst am: 18.03.2010, 14:01     Titel: Variablen versch. Dimensionen ohne for-Schleife verknüpfen
  Antworten mit Zitat      
Hallo zusammen,

bin leider nicht fündig geworden, daher eine (wahrscheinlich) einfache Frage:

Ich habe "globale" Variablen und möchte Ergebnisse aus Zwischenrechnungen dort rein schreiben. Die Dimensionen unterscheiden sich allerdings, weswegen ich das momentan nur über ein for-Schleife lösen kann.
Gibt es eine Möglichkeit die Schleife zu meiden?

bisher:
Code:

% existierende Variablen
SZR = zeros(8,4,2);  % 4 Werte für 2 mal 8 Regler
SZK = zeros(1,4);     % 4 Werte einer Kurve für einen Regler

% jetzt soll SZK z.B. in alle Reihen der ersten Matrix von SZR geschrieben werden, da alle Regler die gleichen Werte bekommen
% z.B. mit Schleife so:

for i=1:8
    SZR(i,:,1) = SZK;
end

% der Aufruf  SZR(:,:,1) = SZK bringt mir den error "dimension mismatch"
 


Wahrscheinlich ist es nur eine Banalität, aber ich habe ziemlich viel Schleifen davon und das würde mir schon einen Geschwindigkeitsbonus bringen.

Vielen Dank für die Hilfe

Roland
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.03.2010, 14:14     Titel:
  Antworten mit Zitat      
Hallo,

eine Möglichkeit ohne for-Schleife wäre mit repmat

Code:
SZR = zeros(8,4,2);  % 4 Werte für 2 mal 8 Regler
SZK = ones(1,4);     % 4 Werte einer Kurve für einen Regler

for i=1:8
    SZR(i,:,1) = SZK;
end

SZR1 = zeros(8,4,2);
SZR1(:,:,1) = repmat(SZK, 8, 1);

isequal(SZR, SZR1)


Ich weiss allerdings nicht, inwieweit das das Geschwindigkeitsproblem lösen wird, da hier temporär große Matrizen erzeugt werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
rolewinski
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 10.02.10
Wohnort: Ingolstadt
Version: R2009b
     Beitrag Verfasst am: 18.03.2010, 14:42     Titel:
  Antworten mit Zitat      
Hallo Harald,

leider bringt der Befehl repmat (kannte ich noch nich) keinen Geschwindigkeitsschub. Habe die Zeiten mal gemessen und repmat war teilweise gleich schnell, meist langsamer.
Er hilft mir allerdings an anderer Stelle Wink

Gibt es vielleicht noch andere Vorschläge?

Da war die Frage wohl doch nich so einfach Cool ... freut mich, dass sich bei soviel geballter Matlab-Kompetenz doch noch "schwierige" Fragen stellen lassen Very Happy ...sonst löst ihr das Meiste ja mit Bravur.

Danke und Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
rolewinski
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 10.02.10
Wohnort: Ingolstadt
Version: R2009b
     Beitrag Verfasst am: 22.03.2010, 10:06     Titel:
  Antworten mit Zitat      
Hallo zusammen,

hat vielleicht noch jemand einen Idee?

Ergänzend zu erwähnen ist vielleicht noch, dass die Dimensionen der Matrizen ja nicht vollständig unterschiedlich sind.
Ich habe im Prinzip eine Variable mit 4 Werten für einen Regler und die schreibe ich nach erfolgter Berechnung in meine "Übersichtsvariable" welche für meine 2x8 Regler jeweils diese 4 Werte beinhaltet.
Die Ausdehnung der Matrix in n-Richtung bleibt quasi konstant. Wenn ich jetzt allen Regler die gleichen Werte geben möchte, schaff ich das momentan eben nur über die Schleife.
Gibts da nix einfacheres? Ich hab mehrere solcher Übersichtsvariablen ... das wäre schon ein Geschwindigkeitsvorteil.

danke und Grüße
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.