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

Gleichungssystem

 

theresa
Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2017, 13:13     Titel: Gleichungssystem
  Antworten mit Zitat      
hallo liebe matlab community,

mein Problem sieht folgendermaßen aus. Ich habe eine Matrix mit z.B. 5 Spalten. Jetzt würde ich gerne wissen in wie fern diese voneinander abhängen?

Also z.b.
Code:
x1=0.5*x2+2*x4+x5


wobei x1 hier Spalte 1 ist und x2 Spalte 2 usw.

Wie finde ich so etwas heraus?
Hat jemand eine Idee?

gruß theresa
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.08.2017, 13:40     Titel:
  Antworten mit Zitat      
Hallo,

du kannst z.B. ein lineares Modell fitten:
Code:
mdl = fitlm(M(:, 2:end), M(:,1))


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2017, 14:30     Titel:
  Antworten mit Zitat      
könntest du eventuell ein wenig dazu sagen? Die Codezeile selbst sagt mir jetzt nicht so viel. Und mein Ergebnis kann ich auch nicht interpretieren obwohl ich mit einem Beispiel angefangen habe von dem ich weiß welche Spalten in wie fern von einander abhängen.

geht das ganze auch mit nichtlinearen Modellen?

gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

pauschal kann ich dir auch nicht mehr als das sagen, was in der Doku steht. Die Bitte wäre also, erst die Doku zu lesen und dann ggf. konkrete Fragen zu posten.

Zitat:
Und mein Ergebnis kann ich auch nicht interpretieren obwohl ich mit einem Beispiel angefangen habe von dem ich weiß welche Spalten in wie fern von einander abhängen.

Wenn du möchtest, dass man etwas dazu sagt, müsstest du das Beispiel auch posten.

Zitat:
geht das ganze auch mit nichtlinearen Modellen?

Ja, dann mit fitnlm .

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2017, 15:54     Titel:
  Antworten mit Zitat      
Code:
X(:,1)=randn(500,1);
X(:,2)=X(:,1)*2;
Y(:,1)=randn(500,1);
Y(:,2)=randn(500,1);
W(:,1)=randn(500,1);
W(:,2)=randn(500,1);
W(:,3)=W(:,1)*2;

Z=[X(:,1),W(:,1),W(:,2),X(:,2),Y(:,1),Y(:,2),W(:,3)];


Das wäre mein Beispieldatensatz. Hier sehe ich natürlich welche Spalten voneinander abhängig sind. Nur wie kann ich das jetzt noch mit dem code von dir zeigen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.08.2017, 16:01     Titel:
  Antworten mit Zitat      
Hallo,

das Modell zeigt dir dann, dass
1. Spalte = 0.5 * 4. Spalte

Ein lineares Modell kann auch nur die Zusammenhänge erkennen, die du abfragst - in deinem Fall eben, wie die erste Spalte von den anderen abhängt.

Wenn du Abhängigkeiten von jeweils zwei Variablen untereinander untersuchen möchtest, würde ich die Korrelationen betrachten ( corr ).

Wenn du das allgemeiner haben möchtest, ist mir nicht klar, welche Abhängigkeiten genau geprüft werden sollen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2017, 07:43     Titel:
  Antworten mit Zitat      
Klar bei dem Modell sehe ich die Abhängigkeit noch. Mich interessiert halt welche Spalten wie miteinander korrelieren. Und ob matlab da eine Methode bereitstellt oder wie man da am besten vorgeht. Später hab ich einen Datensatz bei dem man das nicht erkennen kann
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.08.2017, 08:06     Titel:
  Antworten mit Zitat      
Hallo,

wie gesagt: Korrelation je zweier Spalten --> corr
Für komplexere Abhängigkeiten gibt es meines Erachtens keinen automatisierten Weg. Wenn du z.B. wissen möchtest, wie sich jede Spalte am besten als Linearkombination der anderen ausdrücken lässt, dann würde ich eine for-Schleife über fitlm programmieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2017, 11:40     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Wenn du z.B. wissen möchtest, wie sich jede Spalte am besten als Linearkombination der anderen ausdrücken lässt, dann würde ich eine for-Schleife über fitlm programmieren.

Als Matlab Anfänger natürlich nicht so einfach. Hättest du auch einen Ansatz für mich? 😁
Gruß Theresa
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.08.2017, 12:09     Titel:
  Antworten mit Zitat      
Hallo,

Code:
coeffs = zeros(size(Z,2), size(Z,2)+1);
for k = 1:size(Z,2)
    allother = setdiff(1:size(Z,2), k);
    mdl = fitlm(Z(:, allother), Z(:, k));
    coeffs(k, [1, allother+1]) = mdl.Coefficients.Estimate;
end
coeffTable = array2table(coeffs, ...
    'VariableNames', {'const', 'X1', 'W1', 'W2', 'X2', 'Y1', 'Y2', 'W3'}, ...
    'RowNames', {'X1', 'W1', 'W2', 'X2', 'Y1', 'Y2', 'W3'})

Der Table am Ende ist zeilenweise zu lesen und dient der Veranschaulichung.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2017, 20:50     Titel:
  Antworten mit Zitat      
hallo harald,

Code:
coeffs = zeros(size(Z,2), size(Z,2)+1);
for k = 1:size(Z,2)
    allother = setdiff(1:size(Z,2), k);%?
    mdl = fitlm(Z(:, allother), Z(:, k));
    coeffs(k, [1, allother+1]) = mdl.Coefficients.Estimate;

was machst du bei allother?
grade die 4. und 5. Zeile interessieren mich ebenfalls. kannst du dazu etwas sagen was du da genau gemacht hast?

gruß theresa
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.08.2017, 07:48     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
was machst du bei allother?

Das sind alle Spalten bis auf die k-te, anders gesagt:
Code:
[1:k-1, k+1:size(z,2)]


Zeile 4: ein lineares Modell wird erstellt, um die k-te Spalte als lineares Modell aller anderen Spalten darzustellen
Zeile 5: die Koeffizienten werden ausgelesen und in die richtige Zeile (Ausnahme: Diagonalelement) eingefügt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2017, 11:35     Titel:
  Antworten mit Zitat      
eine Zeile könnte so aussehen:
Code:
        const       x1    x2        x3      x4           x5       x6    x7    
          ___________    __    __    ___________    ___________    ___________    

 x1  -2.2204e-17    0     0    2.3477e-17   0.05      1.982e-18    0  -3.556e-19



const. ist dann eine einzige Konstante die dazu addiert wird?

Wenn ich jetzt aus meiner Matrix die entsprechenden Spalten für x3, x4, x5 und x7 hier einsetze dann müsste ich ja mein x1 erhalten...
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.