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

Elemente aus Vektor löschen

 

Babel42
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 05.10.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2007, 13:14     Titel: Elemente aus Vektor löschen
  Antworten mit Zitat      
Hallo @all,
ich will in einem Vektor alle 0'en finden und diese rausschmeißen. Grundsätzlich wäre das kein Problem mit einer Schleife, wenn ich mir vorher mit find() die Indices geholt habe. (Derjenigen Elemente die nicht 0 sind)
Gibt es einen anderen Befehl (vielleicht ählich wie strrep() ), mit dem ich die Schleife umgehen kann?

Grüße Babel42

PS: So hab ich zur Zeit

A=find(Werte);
ZwSp=zeros(length(A),1)
for i=1:length(A)
ZwSp(i)=Werte(A(i));
end
Werte=ZwSp;
Private Nachricht senden Benutzer-Profile anzeigen


outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 22.10.2007, 23:16     Titel:
  Antworten mit Zitat      
Code:
>> a = [1 2 3 0 5 0 3 9 0 0 5 6];
>> a = a(a~=0)

a =

     1     2     3     5     3     9     5     6






MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
jaepen
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 13.04.09
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 29.06.2009, 21:17     Titel: ...
  Antworten mit Zitat      
und wie mach ich das das ich nur ein bestimmtes element eines vektors lösche?

gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Jonny

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.06.2009, 21:24     Titel:
  Antworten mit Zitat      
>> a = [1 2 3 0 5 0 3 9 0 0 5 6];
>> a = a(a~="BELIEBIGES ELEMENT")


oder wie meinst du?
 
josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 29.06.2009, 22:26     Titel:
  Antworten mit Zitat      
Z.B drittes Element löschen:
Code:

_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
jaepen
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 13.04.09
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 30.06.2009, 10:48     Titel: danke
  Antworten mit Zitat      
@josekamara
das funktioniert, danke!

@jonny
ich wollte das belibiege Element nicht dem Wert nach, sondern dem Index nach löschen, trotzdem danke für die hilfe.



gibt es auch eine Option mit dem "delete" Befehl?

gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Hendrik_1
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 18.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2009, 12:28     Titel:
  Antworten mit Zitat      
lässt sich dieser code auch in simulink einbauen? wenn ich das in einen embedded matlab function setze, kommt die folgende fehlermeldung:

Logical indexing is not yet supported


heißt das, es geht prinzipiell nicht, oder mache ich was falsch?

hier meine funktion:



Code:
function y = fcn(f)
% This block supports the Embedded MATLAB subset.
% See the help menu for details.
y = f;
y = y(y~=0)
 


bin für jeden tipp dankbar
Private Nachricht senden Benutzer-Profile anzeigen
 
josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 02.07.2009, 12:23     Titel:
  Antworten mit Zitat      
Anscheinend geht es nicht, weil die Embedded function nicht alle Befehle von Matlab unterstützt.
Versuch lieber mit den Simulink Blöcken.

Gruß,

Jose
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
Hendrik_1
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 18.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.07.2009, 15:55     Titel:
  Antworten mit Zitat      
irgendeine idee, wie das funktionieren könnte?

ich probiere seit 2 tagen rum, komme aber nicht weiter.

würde es funktionieren, die entsprechenden befehle in c zu programmieren und dann als block einzufügen?

mfg


Hendrik
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: 03.07.2009, 16:10     Titel:
  Antworten mit Zitat      
Hallo Hendrik,

damit das sinnvoll ist, müsste f (zu jedem Zeitschritt!) ein Vektor sein. y wäre dann ein Vektor, dessen Länge zumindest theoretisch in den einzelnen Zeitschritten unterschiedlich ist.

Ich kann mir nicht vorstellen, dass das erwünscht ist. Vielleicht liegt das aber auch nur an meiner begrenzten Phantasie Wink

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
jaepen
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 13.04.09
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 13.07.2009, 08:54     Titel: ...
  Antworten mit Zitat      
Hallo

Ich hätte nochmal eine kleine Frage zu folgendem code:
Code:
a = a(a~="BELIEBIGES ELEMENT")


Angenommen ich habe x Variablen im Workspace. Nun möchte ich aus allen Variablen ein "BELIBIGES ELEMENT" entfernen, ohne alle variablen auflisten zu müssen.
Also im Prinzip so:

Code:
"gesamter Workspace" = "gesamter Workspace" ("gesamter Workspace" ~="BELIEBIGES ELEMENT")


geht das?
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: 13.07.2009, 14:42     Titel:
  Antworten mit Zitat      
Mit

Code:


kannst du dir eine Liste der Variablen im Workspace ausgeben lassen. Dann eine for-Schleife über alle Elemente (Feld: name), und es sollte funktionieren.
Vorsicht: ich würde wenigstens noch überprüfen, ob die Variablen numerisch sind (über das Feld class).

Viele Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Nora

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2010, 17:06     Titel: Element eines Vektors löschen
  Antworten mit Zitat      
jaepen hat Folgendes geschrieben:
@josekamara
das funktioniert, danke!

@jonny
ich wollte das belibiege Element nicht dem Wert nach, sondern dem Index nach löschen, trotzdem danke für die hilfe.



gibt es auch eine Option mit dem "delete" Befehl?

gruß


a = [9,8,7,6,5,4,3,2,1];

5. Element löschen:

b = [a(1:4),a(6:length(a))]

b =

9. 8. 7. 6. 4. 3. 2. 1.
 
cordoba
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 79
Anmeldedatum: 13.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2010, 17:04     Titel:
  Antworten mit Zitat      
Hallo,

bin bei der Forensuche über diese Frage gestolpert. Mein Problem: Ich muß aus einem Vektor mit komplexen Einträgen alle Werte entfernen, die innerhalb des Einheitskreis liegen. D.h: abs(z)<1 --> löschen

z.B.

Code:

v=[0.2+0.3*i, 2+3*i]
 


soll der erste Eintrag

Code:

0.2 + 0.3*i
 


gelöscht werden, da

Code:

abs(0.2 + 0.3*i)<1
 

Bevor ich jetzt "zufuß" anfange mit Schleife und if Abfrage etc. mir ins Bein zu schießen, meine Frage: Gibt es eine interne Funktion dafür?

Danke für eure Hilfe!

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2010, 17:15     Titel:
  Antworten mit Zitat      
Hallo,

das funktioniert nach dem gleichen Prinzip (also logische Indizierung):
Code:

v=[0.2+0.3*i, 2+3*i]
v(abs(v)<1) = []
 


Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.