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

Probleme mit den Dimensionen

 

Herr.Vorragend.2.0
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 10.05.12
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 10.05.2012, 14:21     Titel: Probleme mit den Dimensionen
  Antworten mit Zitat      
Hallo,
bin gerade frisch registriert... Ich bin Student und hab ein größeres Simulink-Projekt bei dem es um einen synchronen Linearmotor geht. Für diesen will ich über mehrere Fourier-Reihen die Kraft bestimmen. Ein anderer Student hatte den Motor bereits in Matlab dimensioniert und dort mit Hilfe eben dieser Fourier-Reihen die Antriebskraft bestimmt. Dieser Student steht leider z.Z. nicht zur Verfügung.

Hier mal die Berechnung des anderen Studenten in Matlab:
[code]
% Fourierreihe der magnetischen Flussdichte im Einheitssystem

E.B_LS_Fourier = fkt_Fourierreihe([L.PT,L.PsB,E.B_LS,0]);

% Fourierreihe des Statorstrombelag

S.SB1_Fourier = fkt_Fourierreihe([S.PT,WF.SAD,WF.IDach/WF.SAD,0]);
S.SB2_Fourier = fkt_Fourierreihe([S.PT,WF.SAD,0.5*WF.IDach/WF.SAD,S.NT]);
S.SB3_Fourier = fkt_Fourierreihe([S.PT,WF.SAD,0.5*WF.IDach/WF.SAD,-S.NT]);

% Antriebskraft des Einheitssystems [N]

L.Fx_ES = 2 * (2 * S.PT) * S.B * mean(E.B_LS_Fourier(2,:).*(S.SB1_Fourier(2,:) + S.SB2_Fourier(2,:) + S.SB3_Fourier(2,:)));

[code]

fkt_Fourierreihe ist eine Funktion, die in einem anderen m-file bestimmt wird:

[code]

function F = fkt_Fourierreihe(xIN)

PT = xIN(1);
Breite = xIN(2);
Amplitude = xIN(3);
xPhasenverschiebung = xIN(4);

n = 500;
tau = 1e4;

x = linspace(0,2*PT,tau); % linspace(X1, X2, N) generates N points between X1 and X2. For N = 1, linspace returns X2

ftemp = 0;

for i=0:1:n

ftemp = ftemp + (1 / (2 * i + 1) ...
* cos( pi / PT * (2 * i + 1) * ( PT - Breite ) * 0.5) ...
* sin( pi / PT * (2 * i + 1) * (x - xPhasenverschiebung ))) ...
* 4 / pi * Amplitude;

end

F = [x;ftemp];

[code]

Die Variable x hat die Dimension 1x10000. Alle anderen Variablen haben die Dimension 1x1. Das unterschiedlichen Dimensionen ergeben bei der Berechnung in Matlab keine Probleme.

In Simulink hab ich die fkt_Fourierreihe in einem "Matlab Function"-Block realisiert und einen Vector mit den entsprechenden Variablen in den entsprechenden Zeilen als Eingang genommen. Hier kommt bei der Ausführung die Fehlermeldung:

Size mismatch (size [1 x 1] ~= size [1 x 10000]).
The size to the left is the size of the left-hand side of the assignment.

Ich bin alles andere als ein Experte in Matlab oder Simulink, aber ich hab diesen "Matlab Function"-Block so verstanden, dass dort sozusagen in der Matlab-Umgebung gerechnet wird.

Warum ist diese Berechnung "nur" in Matlab möglich aber nicht in dem Matlab in Simulink?

Falls es fragen gibt, kann ich noch mehr Informationen liefern. Ich danke schon mal im Voraus für jede Antwort!

Mit freundlichen Grüßen
M.S.
Private Nachricht senden Benutzer-Profile anzeigen


grinsetina

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.05.2013, 10:44     Titel:
  Antworten mit Zitat      
Hallo,
auch wenn der Thread schon etwas älter ist, aber ich bin auch gerade über das Problem gestolpert und vielleicht hilft dies ja auch anderen.
Im Simulink Block "MatLab Function" kann man die Dimension des Eingangsvektors nicht ändern! Mir ist dies aufgefallen, als ich bei einem [3x1] Vektor eine Zeile anhängen wollte:
u = [1;2;3] ist der Eingangsvektor;
im Function Block:
function y = fcn(u)
u=u[u;1]
y=u;
Dies geht in diesem Block einfach nicht.
Ich habe nun einen Work-Around machen müssen, indem ich einen weiteren Eingangsvektor v = [1;1;1;1] hilfsweise deklariert habe, und dann die ersten drei Werte des Vektors u in v kopiert habe. Dann habe ich y = [1;2;3;1] erhalten.
Sehr mühselig, das erst einmal herauszukriegen, denn in MatLab und in m-Files funktionierte es einwandfrei.
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 - 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.