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

"vpa, sym" are excluded from packaging

 

elchico
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 87
Anmeldedatum: 04.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2022, 13:55     Titel: "vpa, sym" are excluded from packaging
  Antworten mit Zitat      
Hallo zusammen,

Ich möchte meinen Matlab Code inkl. Appdesigner-GUI compilieren und bekomme als Warnhinweis:
Zitat:
"vpa, sym" are excluded from packaging for the MATLAB Runtime environment according to the MATLAB Compiler license. Either remove the file or function from your code, or use the MATLAB function "isdeployed" to ensure the function is not invoked in the deployed component.

Das klingt nach: Ich muss den Teil des Codes zwingend entfernen, richtig?

Somit hier meine Fragestellung:
Wie ersetze ich den Code-Teil mit vpa/sym? Das Problem ist nämlich, dass besseli für real(alpha*sqrt(inv(szBesselArg(1)))) > 700 das Ergebnis nicht mehr berechnen kann.
Allerdings brauche ich genau diese Berechnung, weil die vorgegeben wird durch das Modell, mit Hilfe dessen ich Daten fitten möchte.

Danke schon mal.
LG
Michi


Code:

if  real(alpha*sqrt(inv(szBesselArg(1)))) > 700
    besselfrac = double(vpa(besseli(0,sym(besselarg))./besseli(1,sym(besselarg))));
else
    besselfrac=(besseli(0,besselarg)./besseli(1,besselarg));
end
 
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.01.2022, 14:55     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich muss den Teil des Codes zwingend entfernen, richtig?

Wenn du die Anwendung kompilieren willst, dann würde ich dem zustimmen, ja.

Zitat:
Das Problem ist nämlich, dass besseli für real(alpha*sqrt(inv(szBesselArg(1)))) > 700 das Ergebnis nicht mehr berechnen kann.

Wie hängt szBesselArg(1) mit besselarg zusammen? Kannst du konkrete Beispiele für besselarg angeben?

besseli bietet eine Option scale. Kann dir das eventuell helfen?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
elchico
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 87
Anmeldedatum: 04.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2022, 15:30     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für Deine Nachfrage.
Kennst Du Dich mit Besselfunktionen aus? Bin überhaupt kein Experte, sondern nur stumpfsinniger Anwender.

Wenn ich die Besselfunktion scale, kann ich die nach Berechnung auch wieder zurückscalen? Denn das Modell kann ich natürlich nicht einfach so berechnen.

Beispielswerte:
Code:

alpha = 94.5;
inv(1) = 3.1142e-01 + 1.3054e+02i;
besselarg=alpha.*sqrt(inv);
szBesselArg = size(besselarg);
if  real(alpha*sqrt(inv(szBesselArg(1)))) > 700
    besselfrac = double(vpa(besseli(0,sym(besselarg))./besseli(1,sym(besselarg))));
else
    besselfrac=(besseli(0,besselarg)./besseli(1,besselarg));
end
 


LG
Michi
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.01.2022, 15:49     Titel:
  Antworten mit Zitat      
Hallo,

ich kenne mich auch nicht wirklich mit Bessel-Funktionen aus, ich habe nur die Doku gelesen. Smile
Der entscheidende Punkt ist, dass die Skalierungsfaktoren für die Bessel-Funktionen unabhängig von nu sind. Wenn du also den Bruch zweier Bessel-Funktionen brauchst, dann kannst du ebenso gut mit der skalierten Variante arbeiten, weil man den Skalierungsfaktor kürzen kann.
Code:
besselfrac = (besseli(0,besselarg,1) / besseli(1,besselarg,1))


Du solltest natürlich verifizieren, dass man das immer so sagen kann, aber ich bin recht zuversichtlich. Für dein Beispiel passt es jedenfalls wunderbar.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
elchico
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 87
Anmeldedatum: 04.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2022, 17:15     Titel:
  Antworten mit Zitat      
Hallo Harald,

das ist cool! Danke für die Info, das probiere ich mal aus.
Das würde mir auch insofern das Leben erleichtern, weil wir nur ein paar Lizenzen für die Symbolic Toolbox haben und die häufig voll ausgelastet sind, was etwas nervig ist. Aber das wäre hiermit ja tatsächlich obsolet.

Cool, danke! Smile
LG
Michi
Private Nachricht senden Benutzer-Profile anzeigen
 
elchico
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 87
Anmeldedatum: 04.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2022, 22:44     Titel:
  Antworten mit Zitat      
Kurzes Update:
Es gibt tatsächlich kleinere Abweichungen, allerdings sind die für meinen Ansatz ausreichend. Vielen Dank!
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.