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

Zahlen Matrix suchen und erste Zahl ersetzen

 

Georg099

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2013, 20:31     Titel: Zahlen Matrix suchen und erste Zahl ersetzen
  Antworten mit Zitat      
ich hab eine matrix

A=0 0 3 4


ich will das er mir diese matrix untersucht ob zahlen sind die nicht 0 sind und dann will ich die erste zahl die nicht 0 ist ersetzen!

nicht alle sondern nur die erste

ist das möglich?


glg georg


Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2013, 22:30     Titel:
  Antworten mit Zitat      
ja
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 07.01.2013, 22:35     Titel:
  Antworten mit Zitat      
Code:


A=[0,0,4,3]
for l=1:size(A,2)
        if A(l)>0 || A(l)<0
                A(l)=9999999 %damit ersetzen
                break;
        end
end


 


...geht bestimmt auch ohne for und if...
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
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: 07.01.2013, 23:04     Titel: Re: Zahlen Matrix suchen und erste Zahl ersetzen
  Antworten mit Zitat      
Hallo Georg,

Code:
index = find(A, 1);
A(index) = pi;

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
georg099

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2013, 01:20     Titel: Re: Zahlen Matrix suchen und erste Zahl ersetzen
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo Georg,

Code:
index = find(A, 1);
A(index) = pi;

Gruß, Jan


danke für die antwort

eine frage hab ich noch

wenn ich jetzt eine matrix habe

mit nur 0

und ich habe die while schleife

while matrix (:,1)==0
matrix(:,1)=[]

end

was kann ich dazu eingeben das nicht diese fehlermeldung kommt:

Empty matrix: 2-by-0

??? Index exceeds matrix dimensions.

Error in ==> fairdivision at 26
while startmatrix (:,1)==0

sondern das programmeinfach abbricht

danke im voraus
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.01.2013, 12:34     Titel: Re: Zahlen Matrix suchen und erste Zahl ersetzen
  Antworten mit Zitat      
Hallo Georg,

Code:
while matrix (:,1)==0

Das erzeugt einen Fehler, wenn "matrix" leer ist. Also teste zuerst, ob es leer ist. "Leer" heißt auf Englisch "empty". M;it "docsearch" kann man in der Dokumentation nach Ausdrücken suchen.

Nebenbei ist das iterative Verkleinern eines Arrays ein Don't in der Programmier-Technik. Suche dazu nach "pre-allocation" im Forum. Genau wie beim iterativen Vergrößern benötigt dies sehr viel Speicher: Wenn "matrix" zunächst 100 Elemente enthält (also 800Byte), werden insgesamt (100+99+98+...+1)*8 Bytes Speicher von Betriebssystem reserviert. Bei so kleinen Test-Problemen macht es nichts, wenn man 0.05 Sekunden auf das ergebnis warten muss. Aber wenn man sich gleich zu Beginn mit diesen Schwierigkeiten auseinandersetzt, rennt man nicht später bei echten Anwendungen in diese Falle.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
georg099

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2013, 15:04     Titel: Re: Zahlen Matrix suchen und erste Zahl ersetzen
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo Georg,

Code:
while matrix (:,1)==0

Das erzeugt einen Fehler, wenn "matrix" leer ist. Also teste zuerst, ob es leer ist. "Leer" heißt auf Englisch "empty". M;it "docsearch" kann man in der Dokumentation nach Ausdrücken suchen.

Nebenbei ist das iterative Verkleinern eines Arrays ein Don't in der Programmier-Technik. Suche dazu nach "pre-allocation" im Forum. Genau wie beim iterativen Vergrößern benötigt dies sehr viel Speicher: Wenn "matrix" zunächst 100 Elemente enthält (also 800Byte), werden insgesamt (100+99+98+...+1)*8 Bytes Speicher von Betriebssystem reserviert. Bei so kleinen Test-Problemen macht es nichts, wenn man 0.05 Sekunden auf das ergebnis warten muss. Aber wenn man sich gleich zu Beginn mit diesen Schwierigkeiten auseinandersetzt, rennt man nicht später bei echten Anwendungen in diese Falle.

Gruß, Jan



danke jan für die große hilfe

habs jetzt umgeschrieben und es funktioniert super

wenn ich jetzt eine matrix mit 2 spalten habe und ich will aber nicht die erste zahl in der ersten spalte sondern in der zweiten

wie funktioniert das?

glg georg
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.01.2013, 16:58     Titel: Re: Zahlen Matrix suchen und erste Zahl ersetzen
  Antworten mit Zitat      
Hallo Georg,

Das funktioniert wieder mit FIND:
Code:
X = [0,0,0,1; ...
         0,1,0,2];
index = find(X(2, :), 1);  % Oder explizit: find(X(2, :), 1, 'first')
 

Nachdem ich schon FIND empfohlen hatte, ist der Schritt X zu indizieren nicht groß.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
georg099

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2013, 17:35     Titel: Re: Zahlen Matrix suchen und erste Zahl ersetzen
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo Georg,

Das funktioniert wieder mit FIND:
Code:
X = [0,0,0,1; ...
         0,1,0,2];
index = find(X(2, :), 1);  % Oder explizit: find(X(2, Smile, 1, 'first')
 

Nachdem ich schon FIND empfohlen hatte, ist der Schritt X zu indizieren nicht groß.

Gruß, Jan


da muss dir leider ein fehler unterlaufen sein!!
damit findet er immer noch nur die erste zahl in der ersten zeile
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 08.01.2013, 17:46     Titel: Re: Zahlen Matrix suchen und erste Zahl ersetzen
  Antworten mit Zitat      
georg099 hat Folgendes geschrieben:


da muss dir leider ein fehler unterlaufen sein!!
damit findet er immer noch nur die erste zahl in der ersten zeile


Nein Laughing da muss dir wohl ein Fehler unterlaufen sein.

Code:


>> X = [0,0,0,1; ...
         0,1,0,2];
>> X

X =

     0     0     0     1
     0     1     0     2


>> index=find(X(2, :), 1);
>> X(2,index)

ans =

     1



 


So schwer ist das jetzt eigentlich nicht....Zeilen und Spalten Angaben solltest du schon mit X(ZEILE,SPALTE) hinkriegen.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
georg099

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2013, 18:26     Titel: Re: Zahlen Matrix suchen und erste Zahl ersetzen
  Antworten mit Zitat      
markuman hat Folgendes geschrieben:
georg099 hat Folgendes geschrieben:


da muss dir leider ein fehler unterlaufen sein!!
damit findet er immer noch nur die erste zahl in der ersten zeile


Nein Laughing da muss dir wohl ein Fehler unterlaufen sein.

Code:


>> X = [0,0,0,1; ...
         0,1,0,2];
>> X

X =

     0     0     0     1
     0     1     0     2


>> index=find(X(2, :), 1);
>> X(2,index)

ans =

     1



 


So schwer ist das jetzt eigentlich nicht....Zeilen und Spalten Angaben solltest du schon mit X(ZEILE,SPALTE) hinkriegen.


jup sry funktioniert jetzt Smile
 
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.