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

Wie Matrix in einer Funktion dynamisch verändern?

 

GrossmeisterBee
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 27.04.08
Wohnort: Ilmenau
Version: 7
     Beitrag Verfasst am: 27.04.2008, 21:58     Titel: Wie Matrix in einer Funktion dynamisch verändern?
  Antworten mit Zitat      
Hallo Leute!

Dieser Beitrag ist sozusagen mein Einstand ins Matlab-Forum. Mein Problem ist dementsprechend nicht so anspruchsvoll, hoffe ich zumindest Smile. Richtige Matlab-Cracks werden darüber wahrscheinlich lachen und sich über den vielen Text ärgern.

Also, das ist die Funktion, um die es geht:
Code:
% Messbereichserweiterung für Strommessung
% Im Moment nur 4fach
% Funktion berechnet die benötigten Vorwiderstände
% in absteigender Reihenfolge
% rp(I,Imax,Rm)
% I     Messbereiche in Ampere als Zeilenvektor
% Imax  Maximaler Eingangsstrom des Messgeräts
%       I und Imax müssen gleichen Einheitenvorsatz haben!
%       Das gilt für alle Elemente von I!
% Rm    Innenwiderstand des Messgeräts
%       Die Vorwiderstände werden in dem Einheitenvorsatz von Rm
%       zurückgegeben
function Rv=rp(I,Imax,Rm)

format short;
Ii=length(I);

A=[
    1                    1                  1                   1
    -Imax/(I(2)-Imax)    1                  1                   1
    -Imax/(I(3)-Imax)   -Imax/(I(3)-Imax)   1                   1
    -Imax/(I(4)-Imax)   -Imax/(I(4)-Imax)  -Imax/(I(4)-Imax)    1
    ];

RM=[
    Imax/(I(1)-Imax)*Rm
    Imax/(I(2)-Imax)*Rm
    Imax/(I(3)-Imax)*Rm
    Imax/(I(4)-Imax)*Rm
    ];

% Vorwiderstands-Netzwerk berechnen
Rv=inv(A)*RM;

Die Funktion ist denkbar einfach: Anhand des Stromvektors 'I' und der beiden skalaren Werte Imax und Rm wird ein LGS gelöst. Zurückgegeben wird ein Widerstandsvektor. Die Funktion realisiert die Messbereichserweiterung bei Strommessung.

Zu meinem Problem: Die Matrix A und der Spaltenvektor RM sollten ihre Dimension entsprechend der Anzahl der Elemente von 'I' anpassen können. D.h. wenn 'I' z.B. 1x4 ist, dann sollte A 4x4 und RM 1x4 sein.

A und RM unterliegen ausserdem einem "Bildungsalgorithmus" den man denke ich anhand der Funktion schon sehr gut erkennen kann. Dieser Algorithmus sollte anhand der Anzahl der Elemente von 'I' ausgeführt werden.

Im Moment "geht" die Funktion nur, wenn 'I' exakt 4 Elemente hat. Das ist natürlich dürftig. Mir fällt im Moment aber keine vernünftige Variante ein, mit der ich A und RM "dynamisch" in Abhängigkeit von I erzeugen könnte. Dazu hab ich leider noch ein bissel zu wenig Programmiererfahrung.

Ein Schubs in die richtige Richtung mit nem groben Ansatz sollte mir schon reichen.

Danke im Voraus,
GMB
Code:
Code:
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 - 2024 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.