Verfasst am: 10.12.2008, 10:12
Titel: Frage zum kompilieren
Hallo zusammen,
Ich hab mal eine generelle Frage:
Ist es möglich ein umfangreiches Matlab-Programm (Mit M-files, C-files, mex-files, GUI und Simulinkmodellen) OHNE den Matlab-Compiler zu kompilieren?, also mit den reinen Grundfunktionen von mcc oder mbuild
Ich arbeite mit 7.1.0.246 (R14), SP3 (und hab den Compiler natürlich nicht installiert )
Weiß jemand wieviel eine Entwicklerlizenz für den Matlab Compiler kostet, falls es nicht geht?
MCC und MBUILD *sind* Befehle des MATLAB Compilers.
Dann hab ich wohl was nicht verstanden. Ich war der Meinung, ich hab ihn nicht installiert. Ist es dann so, dass wenn er die beiden Befehle kennt, ich über den Compiler verfüge?
Zitat:
Der MATLAB Compiler ist übrigens nicht in der Lage Simulink Modelle zu kompilieren.
das ja doof Alternativen?,
Zitat:
Was ist das Ziel der Aktion? Performancegewinn? Know-How Schutz?
Know-How Schutz auch, aber könnte ich auch drauf verzichten. Das was geheim ist, steht sowieso in der lib-Datei. Im Wesentlichen ist das Verteilen wichtig, so dass andere das Ganze ohne Matlab benutzn können. Das würde natürlich vorraussetzen, dass man die Simulink-Geschichten irgendwie ohne Matlab benutzen kann.
zeigt mit 0/1 an um der MATLAB Compiler lizenziert ist.
Simulink Modelle kann man mit dem Real-Time Workshop (RTW) in C-Code umwandeln und somit auch Stand-Alone Applikationen erstellen. Die MATLAB Compiler-generierte EXE kann dann die RTW-generierte EXE rufen. Das geht, ist aber recht komplex. Es mach nur wenige Anwender aus Unternehmen wo MATLAB Compiler und RTW ohnehin für andere Projekte vorhanden sind.
Wenn es um's Verteilen geht: Wer ist denn die Zielgruppe?
Wunderbär, vielen Dank schonmal für die guten Nachrichten, hab ja schonmal alles was ich brauche. Sogar den Excel Link (sehr wertvoll für mich)
Die Zielgruppe sind Menschen, die mit Matlab an sich nix zu tun haben, aber trotzdem ganz gern mal was berechnet haben wollen, was damit eben am besten geht. Das Tool, was ich hier hab macht des auf ziemlich unkomfortable Weise, ich hab das soweit es geht automatisiert.
Ziel der Übung ist es, dass ein Mensch der aus Werten, die er sich ausdenkt, andere Werte haben möchte, die das Tool ausgibt. Er tippt diese Werte in Excel ein, und hat ein paar Sekunden später, was er möchte. Mehr darf ich dazu leider nicht sagen.
Aber warum fragst Du?
Ich hab auch schon mitbekommen, dass es diesen Excel Link gibt, dachte aber nicht, dass ich den hab.
In der Matlab Hilfe steht auch sone *kleine* Anleitung, wies gemacht wird (Unter Simple Example || Matlab Compiler).
Könntest Du auch das Thema RTW noch etwas näher eingehen? Ich werd mich derweil mal der Matlab Hilfe RTW widmen.
Also mal ein kleines Update: Das Modell is erfolgreich kompiliert, und tut da was es soll, jetzt gehts noch darum, die Parameter bereizustellen
Ich habe eine matlab Funtion geschrieben, die eine Parameter (für Modell lesbar) aus einer Textdatei und einer Exceldatei generiert. Es gibt grob zwei Abläufe in der Funktion, die ich per Eingangsargument auswähle. Hab das auch entsprechend per varargin definiert, was wann passiert.
Das ganze soll als Standalone exe verfügbar und per Eingabeaufforderung gestartet werden. Die kompilierte Datei macht aber nicht das was sie soll, nimmt keine Flags an und schreibt auch keine Datei. Zur Frage:
Wie kann ich ihm sagen dass bei Aufruf in der Konsole z.B durch
function.exe- a
das eine und
function.exe -b
das andere ausgeführt?
Gibt es spezielle Programmiertechnische Hindernisse, die icht nicht beachtet habe?
hier der Code
Code:
function verbrauch_macro(varargin)
%UNTITLED1 Summary of this function goes here
% Detailed explanation goes here
ifvarargin{1}=='a' % sim noch nicht gelaufen % Pfad
par_path=['par\']; %Parameter
% Dateiname
name=['fzg.TXT'];
% komplett pfad path=[par_path,name];
dummy=open([par_path,'gm_kon_data.mat']);
rtP=dummy.rtP;
% keyws den daten zuweisen
keyw=varnames(rtP); %namen sind schall und rauch
data=read_data2(path); %aus excel
filename=data{8};
[engine_data]=read_engine_data(filename); %kennfeld einlesen
data2=cell(1,25);
for k=1:length(keyw)
data2{k}.para=keyw(k);
data2{k}.wert=data{k};
end%vom for for k=1:12
data2{k+13}.para{1,1}.exc=engine_data{1,k}.keyw;
data2{k+13}.wert=engine_data{k}.value;
end % für modell
rtP=make_rtp(rtP,data2);
%Probe
Probe=zeros(1,length(rtP.parameters.values));
for k=1:length(rtP.parameters.values) if dummy.rtP.parameters.values(k)==rtP.parameters.values(k)
Probe(k)=1;
end end sum(Probe)
fid=fopen(path);%datei öffnen
i=1;
data=cell(1,25);
while ~feof(fid) line=fgetl(fid);
iflength(line)==0 %leere Zeile überspringen
continue;
end if i==8% Kennfeldname
data{1,i}=line;
else
data{1,i}=str2num(line);
end
i=i+1;
end %vom while
gtr_i_anz=data{11};
gtr_i=zeros(1,gtr_i_anz);
gtr_eta=zeros(1,gtr_i_anz);
for k=1:gtr_i_anz
gtr_i(k)=(data{10+2*k});
gtr_eta(k)=(data{11+2*k});
end% vom for
data{12}=gtr_i;
data{13}=gtr_eta;
zwei Subfunctions musste ich aus Datenschutzgründen leider rausschneiden, aber vllt liegt ja hier schon ein Fehler.
lg, apn
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
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.