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

Wert aus Vektor filtern

 

Breningar
Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2016, 12:28     Titel: Wert aus Vektor filtern
  Antworten mit Zitat      
Moin,

ich habe nochmals ein Problem, bei dem ich etwas unterstützung gebrauchen könnte.

Ich bekomme einen Vektor komplexer Zahlen

x=[0.000128147864815028 - 9.10488327661913e-05i;
0.000179829741262056 + 9.63989478469595e-05i;
-0.000188205690402330 + 2.00809650890252e-05i;
-7.25466669130810e-05 - 3.86777709261112e-05i]

Daraus nehme ich die Nullstellen(Polstellen) über z=roots(x), dann suche ich die absoluten Werte und deren größten Wert c=max(abs(z)); a ist nur zum Aufzeigen aller Abs-Werte.
Mit m lasse ich mir die Summer der Elemente im Vektor anzeigen (auch noch easy).

So jetzt kommts aber. Ich weiß nun die Nullstellen(Polstellen) dank z. Ich weiß dank c auch, welche den größten absoluten Wert hat. Jetzt möchte ich aber als Ausgabe nicht c haben, sondern den Wert aus z, der ergo dann zu c geführt hat. Also die komplexe Zahl, mit dem größten Absolutwert.

Code:
z=roots(x);
                %z=  -1.1308 -  1.0609i
                %       0.9055 + 0.0199i
                %      -0.3520 -  0.1214i
a=abs(z);
                %a=  1.5506
                %      0.9057
                %      0.3724
[m,n]=size(a);  %m=3

c=max(abs(z));       %c=1.5506
 


Ich habe übrlegt, ob es Sinn macht, den Vektor z in einzelne Variablen zu zerlegen oder ob es eine Möglichkeit ähnlich gibt zu sagen, dass Wert c=1.5506 aus Wort an Position z(1,1) liegt.

Oder auch möglich wäre vielleich eine for-Schleife? Allerdings bin ich mir da noch nicht vollständig sicher, wie ich die richtig programmiere

Code:
for b=1:m
Absolut(b)=abs(z(b,1));
%für jede Zeile z(b,1) von 1 bis m (weil m=Anzahl Elemente in z) nehme ich
%den Absolutwert Absolut(b), sodass ich weiß Absolut(1) hat den Wert aus
%z(1,1), usw.
end

naja aber ich habe immernoch das Problem, dass ich dann nicht weiß, wie ich von dem max-Wert aus wieder den dazugehörigen komplexen bekomme. :/

Ich danke vielmals,

LG Bren
Private Nachricht senden Benutzer-Profile anzeigen


Tom_Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2016, 13:20     Titel:
  Antworten mit Zitat      
Hallo,

die Funktion max hat noch einen zweiten Rückgabewert, nämlich die Stelle, an der sie die maximale Zahl gefunden hat:
Code:

[c,index]=max(abs(z));
zmax = z(index)


Gruß Tom
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.12.2016, 13:29     Titel: Re: Wert aus Vektor filtern
  Antworten mit Zitat      
Hallo Breningar,

Ich verstehe nicht, wie man von einem 1x4 Vektor "Nullstellen" oder "Pole" bestimmen kann. Das hat aber wohl nichts mit der Frage zu tun.

Code:
x=[0.000128147864815028 - 9.10488327661913e-05i;
    0.000179829741262056 + 9.63989478469595e-05i;
     -0.000188205690402330 + 2.00809650890252e-05i;
      -7.25466669130810e-05 - 3.86777709261112e-05i]

z=roots(x);
a=abs(z);
[c, index] = max(abs(z));
z_max = z(index)

Meinst Du dies?

Gruß, Jan

Zuletzt bearbeitet von Jan S am 15.12.2016, 12:41, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Breningar
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2016, 13:35     Titel:
  Antworten mit Zitat      
ich habe geahnt, dass es so einfach ist. Danke vielmals.

Ich habe mich einfach noch nicht daran gewöhnt, dass ich die Befehle unterschiedlich anwenden kann. Wenn ich y=max(x) ist das für mich der fertige Befehle, dass ich auch [y,z]=max(x) zur Verfügung habe, vergesse ich nahezu immer (oder denke nur bei einzelnen Befehlen wie size daran).

Also vielen Dank Tom, funktioniert prima


LG Bren
Private Nachricht senden Benutzer-Profile anzeigen
 
Breningar
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.11.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2016, 13:39     Titel:
  Antworten mit Zitat      
Hallo Jan,

auch dir danke, ja genau die richtige Lösung.

Der Vektor ist vorerst nur zum testen. Ich versuche immer erstmal so einfach wie irgendmöglich einen Weg zu finden, bzw. das Problem das ich gerade habe, soweit wie möglich einzuschränken. In diesem Fall wollte ich nur 4 komplexe Werte haben, um eben irgendwelche Nullstellen zu erhalten.
Im Grunde stellt dieser Vektor die Elemente einer Übertragungsfunktion dar, um die ich mich jetzt im nächsten Schritt kümmere.

LG Bren
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.