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

Substitution einer sybolischen Matrix

 

helmat
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 92
Anmeldedatum: 18.12.11
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 13.11.2015, 22:01     Titel: Substitution einer sybolischen Matrix
  Antworten mit Zitat      
Hallo,
ich suche nach einem vektorisierten Weg, in dem folgenden Skript den symbolischen Vektor Z numerisch für X und Y auszuwerten.
Code:

X = sym(['[',sprintf('X(%d) ',1:20),']'])  %sym 1x4
Y = sym(['[',sprintf('Y(%d) ',1:20),']'])  %sym 1x4
Z = X+Y                                    %sym 1x4
X=1:20
Y=101:120
%Jetzt soll Z mit X und Y numerisch ausgewertet werden:  
%Z=subs(Z) %error "use the VPA function instead"
%Z=double(Z)%error "use the VPA function instead"
 


Wie kann man das machen? Mit vpa komme ich nicht weiter.
_________________

Herzliche Grüße
helmat

p.s.
Hard work beats talent if talent doesn't work hard.
Private Nachricht senden Benutzer-Profile anzeigen


Friidayy
Forum-Century

Forum-Century


Beiträge: 225
Anmeldedatum: 17.12.13
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 21.12.2015, 12:06     Titel:
  Antworten mit Zitat      
Hallo Helmat,

zuersteinmal überschreibst du deine erzeugten symbolischen Variablen X und Y mit den double Vektoren X und Y. Was hast du genau vor? Falls du einfach zwei liegende Vektoren jeweils spaltenweise addieren willst, brauchst du keine symbolische Variablen, wahrs. ist dein Problem aber relativ komplex und du hast es der einfachhalthalber möglichst einfach dargestellt.

Zu deinem Problem sehe ich nur folgende Lösung:
Code:
clear all; close all; clc;

X = sym('X',[1,20]);
X1=1:20;

Y = sym('Y',[1,20]);
Y1=101:120;

Z=X+Y;
subs(Z,{'X1' 'Y1'},[1 101])


Für den subs-Teil wurden jetzt bsphaft X1 und Y1 eingesetzt, für dein Problem musst du eine Schleife schreiben die von X1,Y1 bis X20,Y20 geht.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
helmat
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 92
Anmeldedatum: 18.12.11
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 21.12.2015, 15:04     Titel:
  Antworten mit Zitat      
Hallo Friidayy,
danke für deine Antwort!

Das Thena ist Schreibvereinfachung.
Ich will z.B. eine symbolische Matrix Y, die abhängig von der symbolischen Matrix X berechnet wurde (und ein längliches Monster ist), für eine numerisch redefinierte Matrix X auswerten. Dabei möchte ich nicht (umständlich) den ai_j einzelne Werte, wie in dem folgenden Beispiel, zuweisen müssen.
Code:
clear all; close all; clc;
X = sym('a',[2,2])
Y=inv(X)
a1_1=1; a1_2=0;% Gesucht ist eine Schreibweise, die X=[1 0;0 1] statt ai_j verwendet
a2_1=0; a2_2=1;% Gesucht ist eine Schreibweise, die X=[1 0;0 1] statt ai_j verwendet
Y=subs(Y)

Eine von Anfang an numerische Rechnung ist ausgeschlossen, weil Y mit Kommandos der Symbolic Toolbox ermittelt wurde.
_________________

Herzliche Grüße
helmat

p.s.
Hard work beats talent if talent doesn't work hard.
Private Nachricht senden Benutzer-Profile anzeigen
 
Friidayy
Forum-Century

Forum-Century


Beiträge: 225
Anmeldedatum: 17.12.13
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 21.12.2015, 15:28     Titel:
  Antworten mit Zitat      
Zufällig doch die richtige Lösung gefunden,

Code:
X = sym('a',[2,2])

Y=inv(X)

a1_1=2; a1_2=0;% Gesucht ist eine Schreibweise, die X=[1 0;0 1] statt ai_j verwendet
a2_1=0; a2_2=3;% Gesucht ist eine Schreibweise, die X=[1 0;0 1] statt ai_j verwendet
Y1=subs(Y)


Y1=subs(Y, X, [2 0; 0 3])
Private Nachricht senden Benutzer-Profile anzeigen
 
helmat
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 92
Anmeldedatum: 18.12.11
Wohnort: ---
Version: R2020a
     Beitrag Verfasst am: 21.12.2015, 18:02     Titel:
  Antworten mit Zitat      
Das habe ich gesucht. In der Hilfe heißt das subs(S, old, new). Ich hab's mehrfach überlesen.
Danke nochmal!
_________________

Herzliche Grüße
helmat

p.s.
Hard work beats talent if talent doesn't work hard.
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.