|
|
m-file level2 s-function mit multiple output |
|
catalan |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 14.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.06.2011, 15:46
Titel: m-file level2 s-function mit multiple output
|
|
|
|
|
Hallo,
ich habe folgendes Problem:
Ich will eine m-file level2 s-function schreiben, die mehrere Ausgänge hat.
Wenn ich nun nur Skalare als Output verwende funktioniert das soweit auch.
Ich möchte aber Matrizen als Output haben. Hier erhalte ich folgende Fehlermeldung:
Invalid assignment in 'testsfunction/Level-2 M-file S-Function': attempt to assign a matrix to a vector.
Wenn ich nur einen Ausgang in meiner sfunction habe kann ich eine Matrix ausgeben.
Warum funktioniert das bei mehreren Ausgängen nicht?
hier der Quellcode:
function test_sfunction(block)
setup(block);
function setup(block)
block.NumInputPorts = 1;
block.NumOutputPorts = 4;
block.NumDialogPrms = 1;
block.InputPort(1).Dimensions = 1;
block.OutputPort(1).Dimensions = 1;
block.OutputPort(2).Dimensions = 1;
block.OutputPort(3).Dimensions = 1;
block.OutputPort(4).Dimensions = size(2,2);
block.DialogPrmsTunable = {'tunable'};
block.SetPreCompInpPortInfoToDynamic;
block.SetPreCompOutPortInfoToDynamic;
block.SampleTimes = [0 0];
block.RegBlockMethod('Outputs', @Outputs);
block.RegBlockMethod('SetInputPortSamplingMode',@SetInputPortSamplingMode);
function SetInputPortSamplingMode(block, idx, fd)
block.InputPort(idx).SamplingMode = fd;
block.OutputPort(1).SamplingMode = fd;
block.OutputPort(2).SamplingMode = fd;
block.OutputPort(3).SamplingMode = fd;
block.OutputPort(4).SamplingMode = fd;
function Outputs(block)
block.OutputPort(1).Data = 1;
block.OutputPort(2).Data = 1;
block.OutputPort(3).Data = block.InputPort(1).Data;
block.OutputPort(4).Data = eye(2);
Kann mir jemand weiterhelfen?
Danke!
|
|
|
|
|
Thomas84 |
Forum-Meister
|
|
Beiträge: 546
|
|
|
|
Anmeldedatum: 10.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.06.2011, 06:09
Titel:
|
|
Hallo!
size(2,2) gibt dir die Anzahl der Spalten der Matrix [2] zurück. Und die ist 1.
viele Grüße
Thomas
|
|
|
catalan |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 14.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.06.2011, 21:35
Titel:
|
|
wenn ich die Dimension auf diesem Weg festlege
(block.OutputPort(4).Dimensions = [2,2]; )
erhalte ich noch immer dieselbe Fehlermeldung.
Hat das bei dir funktioniert?
|
|
|
Thomas84 |
Forum-Meister
|
|
Beiträge: 546
|
|
|
|
Anmeldedatum: 10.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.06.2011, 05:51
Titel:
|
|
Ja, bei mir funktioniert das mit dem obigen Code.
|
|
|
|
|
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.
|
|