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

Ausgleichsgerade jeder Spalte einer Matrix

 

Stromberg
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 13.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.11.2014, 00:37     Titel: Ausgleichsgerade jeder Spalte einer Matrix
  Antworten mit Zitat      
Hallo

ich habe einen Vektor A und eine Matrix B mit 24 Spalten. Beide weisen die gleiche Länge auf.

Ich würde gerne von jeder Spalte der Matrix B in Abhängigkeit vom Vektor A Ausgleichsgeraden erstellen und mir die Steigungen und den Ordinatenabschnitt der Ausgleichsgeraden in einer Matrix C ausgeben lassen.


Mit dem allgemeinen Ansatz für die erste Spalte der Matrix B gelingt mir dies.

Code:
% Ausgleichsgerade der 1. Spalte des Vektors B
B1p = polyfit(A,B(:,1),1);        

% Steigung
m1 = B1p(1);  

% Ordinatenabschnitt
b1 = B1p(2);


Ich könnte jetzt diesen Ansatz 24 mal kopieren und neue Variablen zuweisen und die 24 Steigungen und Ordinatenabschnitte in einer Matrix C vereinen.

Kennt hier jemand vielleicht eine elegantere Lösung?
Private Nachricht senden Benutzer-Profile anzeigen


Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 09.11.2014, 02:53     Titel:
  Antworten mit Zitat      
Hallo,

Bevor du das 24x ausschreibst, nimmste lieber ne Schleife und statt in die Hilfsvariablen kannst du direkt in die gewünschte Zielmatrix schreiben.

Code:
A = rand(500, 1);
B = rand(500, 24);

C = zeros(2, size(B,2));
for ii = 1:size(B,2)
    % Ausgleichsgerade
    Bp = polyfit(A,B(:,ii),1);
   
    % Steigung
    C(1,ii) = Bp(1);
   
    % Ordinatenabschnitt
    C(2,ii) = Bp(2);
end



Variablenbezeichner mit Index im Namen sind keine gute Idee, da deren Weiterverarbeitung kompliziert ist; siehe diverse Threads zu eval, evalin oder assignin.

Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Stromberg
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 13.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.11.2014, 22:49     Titel:
  Antworten mit Zitat      
Vielen Dank für die wie immer klasse Antwort.

Ich habe den Code ein wenig umgeschrieben und (Martix C = 2 Spalten anstelle 2 Zeilen) und habe mit einer for-Schleife die Visualisierung der Ausgleichsgeraden realisiert:

Code:
C = zeros(size(B,2),2);
for i= 1:size(B,2)
    % Ausgleichsgerade
    Bp = polyfit(A,B(:,i),1);
   
    % Steigung
    C(i,1) = Bp(1);
   
    % Ordinatenabschnitt
    C(i,2) = Bp(2);
end

figure
hold on
for i= 1:size(B,2)
    % Darstellung der Ausgleichsgerade
    plot(A,polyval(C(i,:),A))
end



Meine Variablennamen habe ich im meinem Script umgestrickt. Was hatte es eigentlich mit den "ii" auf sich?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.11.2014, 23:20     Titel:
  Antworten mit Zitat      
Hallo,

i ist auch die imaginäre Einheit. Wenn man mit komplexen Zahlen arbeitet, kann es da zu Konflikten kommen. Daher verwenden viele nicht i, sondern stattdessen ii oder I als Schleifenindex.

Grüße,
Harald
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 - 2025 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.