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

bestimmte Zeilen löschen

 

Denky1
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 24.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.08.2015, 09:00     Titel: bestimmte Zeilen löschen
  Antworten mit Zitat      
Hallo da bin ich schon wieder mit einem Problem.

ich habe im einfachsten Fall eine 27x3 Matrix (kann aber auch größer sein)

mit 3 unterschiedlichen Frequenzen (f1 =Spalte1, f2=Spalte2 und f3=Spalte3).
Code:

FreqCombi= [
800   800   800;
800   800   801;
800   800   802;
800   801   800;
800   801   801;
800   801   802;
800   802   800;
800   802   801;
800   802   802;
801   800   800;
801   800   801;
801   800   802;
801   801   800;
801   801   801;
801   801   802;
801   802   800;
801   802   801;
801   802   802;
802   800   800;
802   800   801;
802   800   802;
802   801   800;
802   801   801;
802   801   802;
802   802   800;
802   802   801;
802   802   802;]


Ich hätte gerne nur folgende Kombinationen

f1 f1 f2
f1 f1 f3
f1 f2 f3
f1 f3 f2
f2 f2 f3

Ich habe schon mit dem Befehl unique probiert, damit bin ich schon nah am Ergebnis gewesen, aber weiter komme ich nicht. Könnt ihr mich bitte helfen

Code:

Ergebnis=unique(sort(FreqCombi,2),'rows');
Private Nachricht senden Benutzer-Profile anzeigen


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.08.2015, 09:09     Titel:
  Antworten mit Zitat      
mit unique(bla) die drei Frequenzen herausfinden und anschließend selbst in den Kombinationen zusammenstecken, die Du haben willst? Ist dann kein Einzeiler mehr, aber es funktioniert... Oder soll das irgendwann mal für beliebig viele Frequenzen funktionieren?
Private Nachricht senden Benutzer-Profile anzeigen
 
Denky1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 24.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.08.2015, 09:34     Titel:
  Antworten mit Zitat      
Du hast es richtig erfasst. Das ist jetzt nur ein einfaches Beispiel, später sollen noch wesentlich mehr Frequenzen dazukommen.

Vielleicht hilft es jemanden wenn ich mehr erzähle.

Code:

Nlocs=[800 801 802]
FreqCombi = npermutek(Nlocs,3);
 


Nolds sind die Frequenzen die ich habe. (da können auch mehr stehen)
Mit der Funktion npermutek erhalten ich in einer Matrix alle Kombinationen die ich brauche und noch viele mehr.

Ich brauche aber nur die Kombinationen von FreqCombi die am Ende nach
Code:
FreqE(:,1)=FreqCombi(:,1)+FreqCombi(:,2)-FreqCombi(:,3);


zwischen 795 und 805 liegen.

ich hoffe ihr könnt mir jetzt mit den Informationen weiterhelfen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.08.2015, 09:41     Titel:
  Antworten mit Zitat      
Denky1 hat Folgendes geschrieben:

Ich brauche aber nur die Kombinationen von FreqCombi die am Ende nach
Code:
FreqE(:,1)=FreqCombi(:,1)+FreqCombi(:,2)-FreqCombi(:,3);


zwischen 795 und 805 liegen.


Damit lässt sich doch arbeiten.

Code:

untere_grenze = 795;
obere_grenze = 805;
FreqE = FreqCombi ( ((FreqCombi(:,1)+FreqCombi(:,2)-FreqCombi(:,3)) > untere_grenze) && ((FreqCombi(:,1)+FreqCombi(:,2)-FreqCombi(:,3)) < obere_grenze) );
 


Oder in Worten: Schreib die Elemente von FreqCombi in FreqE, für die gilt, dass "Element 1+2-3" zwischen der unteren und der oberen Grenze liegen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.08.2015, 10:38     Titel:
  Antworten mit Zitat      
Hallo Denky1,

Wie bei allen Permutations-Aufgaben ist es wichtig zu bedenken, was genau "viel mehr" bedeutet. Wenn es z.B. 4000 Werte sind ist npermutek vollkommen unmöglich, da es in keinen Speicher passt.
In diesem Fall müsste man die Permutationen konstruktiv erzeugen und alles weglassen, dass die Gleichung nicht erfüllen kann. Da man vorher nicht weiß, wie viele Zeilen dabei heraus kommen, müsste man dann noch geschickt pre-allozieren.

Zitat:
Nolds sind die Frequenzen die ich habe.

"Nolds" taucht in Deinem Code nicht auf, oder?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.08.2015, 10:42     Titel:
  Antworten mit Zitat      
Ich glaube, Nolds und Nlocs sind das gleiche...
Private Nachricht senden Benutzer-Profile anzeigen
 
Denky1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 24.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.08.2015, 10:48     Titel:
  Antworten mit Zitat      
Epfi hat recht ich meinte Nlocs, da war die Autokorrektur wieder schneller Wink

Es werden in Nlocs keine 4000 Werte sein, sondern nur rund 200... und das sollte Matlab hinbekommen
Für andere Vorschläge wäre ich auch dankbar Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.08.2015, 10:50     Titel:
  Antworten mit Zitat      
Probier das lieber mal aus, bevor Du großartig was implementierst...
Private Nachricht senden Benutzer-Profile anzeigen
 
Denky1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 24.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.08.2015, 11:15     Titel:
  Antworten mit Zitat      
Für die Anzahl von Frequenzen, die ich habe funktioniert es....
Es dauert zwar ein bisschen, aber ich bekomme die Informationen.
Ich brauche nur Hilfe um die passenden Kombination rauszufiltern.
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.