|
|
Probleme mit den Dimensionen |
|
Herr.Vorragend.2.0 |
Forum-Newbie
|
|
Beiträge: 1
|
|
|
|
Anmeldedatum: 10.05.12
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.05.2012, 14:21
Titel: Probleme mit den Dimensionen
|
|
|
|
|
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.
|
|
|
|
|
grinsetina |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.05.2013, 10:44
Titel:
|
|
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
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|