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

Vektorisierung einer for Schleife - Matrix Dimensionen

 

DarkCell
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 20.05.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.10.2012, 19:28     Titel: Vektorisierung einer for Schleife - Matrix Dimensionen
  Antworten mit Zitat      
Also ich habe eine Matrix für 12 Parameter

Code:
%Das ist die Matrix
C=[0.0005,  0.083,  50,     0,  0,  0.057,  1;... %Constants for alpha_x1
   0.0013, -0.06,   20,     0,  0, -0.04,   1;... %Constants for beta_x1
   0,       0,      47,    -1, 47, -0.1,   -1;... %Constants for alpha_m
   40,     -0.056,  72,     0,  0,  0,      0;... %Constants for beta_m
   0.126,  -0.25,   77,     0,  0,  0,      0;... %Constants for alpha_h
   1.7,     0,      22.5,   0,  0, -0.082,  1;... %Constants for beta_h
   0.055,  -0.25,   78,     0,  0, -0.2,    1;... %Constants for alpha_j
   0.3,     0,      32,     0,  0, -0.1,    1;... %Constants for beta_j
   0.095,  -0.01,   -5,     0,  0, -0.072,  1;... %Constants for alpha_d
   0.07,   -0.017,  44,     0,  0,  0.05,   1;... %Constants for beta_d
   0.012,  -0.008,  28,     0,  0,  0.15,   1;... %Constants for alpha_f
   0.0065, -0.02,   30,     0,  0, -0.2,    1];   %Constants for beta_f
 

Dann hatte ich ein Modell wo ein Input die Spannung V ist (Skalar!) und ich für diese Spannung die Parameter bestimmt habe:
Code:

a_b=(C(:,1,:) .* exp(C(:,2,:) .* (V + C(:,3,:))) + C(:,4,:) .* (V + C(:,5,:)))...
    ./(exp(C(:,6,:) .* (V + C(:,3,:))) + C(:,7,:));
 

Ergebnis: ein Vektor mir 12 Parametern.
Mein Problem:
Ich möchte jetzt die Parameterberechnung so erweitern, dass ich die Parameter für einen Vektor aus mehreren Spannungen berechnen kann:
Mein Versuch so so aus:
Code:

V=[1;2];
N=length(V);

a_b(:,1:1:N)=(C(:,1,:) .* exp(C(:,2,:) .* (V(1:1:N) + C(:,3,:))) + C(:,4,:) .* (V(1:1:N) + C(:,5,:)))...
    ./(exp(C(:,6,:) .* (V(1:1:N) + C(:,3,:))) + C(:,7,:));
 

Nun meckert er aber natürlich, dass er keine Addition durchführen kann, weil die Matrix-Dimensionen nicht übereinstimmen.

Wichtig ist noch, dass ich keine for-Schleife machen will, da diese Funktion in einr Differentialgleichungsfunktion reinkommt und entsprechend sehr häufig aufgerufen werden wird. Außerdem soll der V-Vektor sehr groß werden.
Danke schonmal im Voraus.
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: 05.10.2012, 21:30     Titel:
  Antworten mit Zitat      
Hallo,

das weiter zu vektorisieren dürfte schwierig werden.

Was aber klappen sollte: über V vektorisieren und stattdessen eine Schleife über die Zeilen von C.

Da C eine 2D-Matrix ist, sollte C( : , I ) statt C( : , I, :) ausreichen.
Ebenso sollte man nicht in einen Vektor indizieren, wenn man den gesamten Vektor nehmen möchte.

Grüße,
Harald
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.