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

In Scicos Scilab-Code verwenden

 

newinscilab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2010, 22:04     Titel: In Scicos Scilab-Code verwenden
  Antworten mit Zitat      
Hallo liebe Forenmitglieder,

meine Frage ist sicher banal, dennoch habe ich im Netz keine Hilfe gefunden.

Ich möchte in Scicos eine Simulation aufbauen. Dazu möchte ich in Scilab geschriebene Programme oder Funktionen, welche kompexe Berechnungen beinhalten, in einem Block unter Scicos einbinden. Mein erster Verdacht viel auf den scifunc - Block, nur hat der mich nicht wirklich ans Ziel gebracht. (Ich habe nicht verstanden, wie ich meinen Code einbinde.) Habt Ihr einen Tip für mich?

Beste Grüße und besten Dank schon mal im Vorraus


aj.geissler
Forum-Guru

Forum-Guru



Beiträge: 251
Anmeldedatum: 26.11.07
Wohnort: Seeheim-Jugenheim
Version: ---
     Beitrag Verfasst am: 21.10.2010, 06:25     Titel:
  Antworten mit Zitat      
Hallo,

einen eigenen Scicos-Block zu definieren, erfordert ein bisserl Übung.
Schau Dir z.B. mal den Block für die Aufspaltung einer komplexen Zahl in Real- und Imaginärteil an
(SCI/macros/scicos_blocks/MatrixOp/MATZREIM.sci)

Der Quellcode für matzreim.sci ist selbst für diese scheinbar einfache Aufgabe recht umfangreich:

Code:

function [x,y,typ]=MATZREIM(job,arg1,arg2)
//
// Copyright INRIA
x=[];y=[];typ=[];
select job
case 'plot' then
  standard_draw(arg1)
case 'getinputs' then
  [x,y,typ]=standard_inputs(arg1)
case 'getoutputs' then
  [x,y,typ]=standard_outputs(arg1)
case 'getorigin' then
  [x,y]=standard_origin(arg1)
case 'set' then
  x=arg1
  model=arg1.model;graphics=arg1.graphics;label=graphics.exprs
  if size(label,'*')==14 then label(9)=[],end //compatiblity
  while %t do
    [ok,decomptyp,lab]=getvalue('Set MATZREIM block parameters',['decomposition type (1=Complex2Real&Imag 2=Real&Imag2Complex)'],list('vec',1),label)
    if ~ok then break,end
    label=lab
   if (decomptyp==1) then
      junction_name='matz_reim';
      in=[-1 -2];
      it=2;
      out=[-1 -2;-1 -2];
      ot=[1 1];
   elseif (decomptyp==2) then
      junction_name='matz_reimc';
      in=[-1 -2;-1 -2];
      it=[1 1];
      out=[-1 -2];
      ot=2;
   else message('decomposition type is not supported');ok=%f;
    end
   funtyp=4;
    if ok then
   [model,graphics,ok]=set_io(model,graphics,list(in,it),list(out,ot),[],[])
    end
    if ok then
      model.sim=list(junction_name,funtyp);
      arg1.model=model
      graphics.exprs=label
      arg1.graphics=graphics
      x=arg1
      break
    end
  end
case 'define' then
  model=scicos_model()
  junction_name='matz_reim';
  funtyp=4;
  model.sim=list(junction_name,funtyp)
  model.in=-1
  model.in2=-2
  model.intyp=2
  model.out=[-1;-1]
  model.out2=[-2;-2]
  model.outtyp=[1 1]
  model.evtin=[]
  model.evtout=[]
  model.state=[]
  model.dstate=[]
  model.rpar=[]
  model.ipar=[]
  model.blocktype='c'
  model.firing=[]
  model.dep_ut=[%t %f]

  label=sci2exp(1)
  gr_i=['xstringb(orig(1),orig(2),''Re&Im'',sz(1),sz(2),''fill'');']
  x=standard_define([3 2],model,label,gr_i)
end
endfunction
 


Bitte in der SciLab-Hilfe im Scicos-Kapitel (für Version 4.1.2) bzw. XCOS-Kapitel (Scilab 5.X) nachschauen.

Grüße
Andreas
_________________

Andreas Geißler
Private Nachricht senden Benutzer-Profile anzeigen
 
scicoslab_team
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 21.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2010, 09:27     Titel: Re: In Scicos Scilab-Code verwenden
  Antworten mit Zitat      
As Andreas has indicated, you can build your block using Scilab code. You need to take a "SciBLK" block in the "Others" Palette. Then you have to set the parameters of the block such as the name of the function, input/output port sizes, etc.

Hope this helps.
Private Nachricht senden Benutzer-Profile anzeigen
 
newinscilab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2010, 11:49     Titel:
  Antworten mit Zitat      
Hallo,

Ich danke Euch für die schnelle Hilfe. Ich werde es versuchen.
 
newinscilab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2010, 09:57     Titel: In Scicos Scilab-Code verwenden
  Antworten mit Zitat      
Hallo,

leider bin ich noch nicht weitergekommen.
Ich habe in Scilab eine funktion geschrieben, der man 6 werte übergeben muss, die dann eine Berechnung durchführt und ein Eergebniss zurückgibt.
Ist es möglich auf einfachem Wege diese Funktion in scicos / Xcos in einen Block einzubauen, der dann 6 eingänge und einen ausgang hat?

Beste Grüße und Dank schon mal im Vorraus
 
roberto.bucher@supsi.ch

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2010, 11:57     Titel:
  Antworten mit Zitat      
Erstens, wenn Du simulieren willst, vergisst im Moment Scilab und Xcos und benuetzt bitte Scicoslab (z.B version 4.4b7 auf www.scicoslba.org). Du wirdst sicher viel Zeit und anders sparen...

Fuer die Benuetzung von SciFunc bloecke in einem Block Diagram, kannst Du das beigelegte Beispiel benuetzen, das zwei input von je 3000 signale bekommt und eine vekot multiplication durchfuehrt jede 3 Sek. und das resultat auf einem scope darstellt. Es ist sehr einfach zu testen:
1) Oeffne Scicoslab
2) Laedt die function fuer das SciFunc block mit "getf myfun.sci"
3) Starte das Scicos editor mit "scicos test)
4) Starte die Simulation

MfG
Roberto

myfun.sci.zip
 Beschreibung:

Download
 Dateiname:  myfun.sci.zip
 Dateigröße:  5.77 KB
 Heruntergeladen:  1007 mal
 
TheSaint
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 05.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2011, 09:52     Titel:
  Antworten mit Zitat      
roberto.bucher@supsi.ch hat Folgendes geschrieben:
Erstens, wenn Du simulieren willst, vergisst im Moment Scilab und Xcos und benuetzt bitte Scicoslab (z.B version 4.4b7 auf www.scicoslba.org). Du wirdst sicher viel Zeit und anders sparen...

Warum spart Scicoslab gegenüber Xcos Zeit? Gibt es noch andere Meinungen dazu??
Private Nachricht senden Benutzer-Profile anzeigen
 
ericson
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 09.11.11
Wohnort: Schweiz
Version: ---
     Beitrag Verfasst am: 16.11.2011, 11:14     Titel: scicosLab lernen
  Antworten mit Zitat      
[quote="roberto.bucher@supsi.ch"]Erstens, wenn Du simulieren willst, vergisst im Moment Scilab und Xcos und benuetzt bitte Scicoslab (z.B version 4.4b7 auf www.scicoslba.org). Du wirdst sicher viel Zeit und anders sparen...

Fuer die Benuetzung von SciFunc bloecke in einem Block Diagram, kannst Du das beigelegte Beispiel benuetzen, das zwei input von je 3000 signale bekommt und eine vekot multiplication durchfuehrt jede 3 Sek. und das resultat auf einem scope darstellt. Es ist sehr einfach zu testen:
1) Oeffne Scicoslab
2) Laedt die function fuer das SciFunc block mit "getf myfun.sci"
3) Starte das Scicos editor mit "scicos test)
4) Starte die Simulation

MfG
Roberto[/quote]
Private Nachricht senden Benutzer-Profile anzeigen
 
TheSaint
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 05.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2011, 10:34     Titel:
  Antworten mit Zitat      
Hallo Ericson,

in dem Post kann ich DEINE Aussage nicht erkennen. Was kannst du dem Beitrag hinzufügen?
Private Nachricht senden Benutzer-Profile anzeigen
 
ericson
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 09.11.11
Wohnort: Schweiz
Version: ---
     Beitrag Verfasst am: 18.11.2011, 11:07     Titel: Xcos: Suche Zugang zu den Parametern in Blocks
  Antworten mit Zitat      
Hallo,
ich wollte dem Roberto eine Frage stellen, aber wahrscheinlich habe ich etwas falsch gemacht, die Frage ist nicht erschienen.
Also: der von Roberto vorgeschlagene Weg über ScicosLab ist vielversprechend und ich möchte es besser lernen. Finde aber zu wenig für mich verständliche Dokumentation. Wie lernt ein Anfänger ScicosLab?
Gruss
Ericson
Private Nachricht senden Benutzer-Profile anzeigen
 
moe69
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 20.12.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2012, 09:23     Titel:
  Antworten mit Zitat      
Hallo,

ich bin auch neu in Scilab 5.3 und wollte die Frage hier noch einmal aufgreifen.

Ich habe ein Scilab Script geschrieben.
Jetzt möchte ich dieses in Xcos einbinden.

Hierzu soll aus dem Scilab Script ein Xcos Block werden (4 Eingänge, 2 Ausgänge)

Wie muss ich nun vorgehen? Also erstes ist wohl aus dem Scilab Script eine Scilab Function zu erstellen?

Es wäre nett, wenn mir jemand weiterhelfen könnte, da ich bis jetzt nichts brauchbares gefunden habe wie hier vorzugehen ist. Ausser diesem Thread hier finde ich im Netz leider nichts.
Private Nachricht senden Benutzer-Profile anzeigen
 
benefit
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 08.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2014, 13:41     Titel:
  Antworten mit Zitat      
moe69 hat Folgendes geschrieben:
Hallo,

ich bin auch neu in Scilab 5.3 und wollte die Frage hier noch einmal aufgreifen.

Ich habe ein Scilab Script geschrieben.
Jetzt möchte ich dieses in Xcos einbinden.

Hierzu soll aus dem Scilab Script ein Xcos Block werden (4 Eingänge, 2 Ausgänge)

Wie muss ich nun vorgehen? Also erstes ist wohl aus dem Scilab Script eine Scilab Function zu erstellen?

Es wäre nett, wenn mir jemand weiterhelfen könnte, da ich bis jetzt nichts brauchbares gefunden habe wie hier vorzugehen ist. Ausser diesem Thread hier finde ich im Netz leider nichts.


1. Eine Funktion erstellen, zB
Code:

function [y1,y2]=testfunktion(u1,u2,u3,u4)
...
endfunction
 



2. Abspeichern, zB in funktionen.sci


3. Kontext in Xcos setzen (Rechtsklick > Kontext)
Code:

chdir('C:\Dein Ordner')
exec('funktionen.sci')
 



4. scifunc_block_m einfügen, dazu im im ersten Fenster
- Input port sizes: [1,1;1,1;1,1;1,1]
- Output port sizes: [1,1;1,1]

Im zweiten Fenster
[y1,y2]=bat_testfunktion(u1,u2,u3,u4)

Im fünften Fenster
y1=[]
y2=[]
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.