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

Ungerade Zahlen aus Array mit NaN ersetzen!

 

Prophecy
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.12.12
Wohnort: Wien
Version: R2013b
     Beitrag Verfasst am: 09.12.2012, 16:14     Titel: Ungerade Zahlen aus Array mit NaN ersetzen!
  Antworten mit Zitat      
Hallo an Alle,

ich mache mich erste seit einigen Tagen mit Matlab (2011a) vertraut und bin durch mein Studium gezwungen bereits ein kleines Programm (m-file) zu erstellen.


1) Erzeugen Sie eine Array
2) Ersetzen sie alle ungerade Zahlen durch NaN
- mittels Matlabfunktion
- händisch mittels Schleife

Jetzt suche ich bereits seit Gestern nach einer Möglichkeit, derartiges zu realisieren. Komme aber zu keiner Lösung.
Hätte den Weg mittels: mod-Befehl probiert...scheint aber nicht zu funktionieren

Code:

function[]=test()
matrix_A=[1 2 3; 4 5 6; 7 8 9];
disp(matrix_A);

%Ungerade Zahlen mit NaN austauschen
[a,b]=size(matrix_A);
for zeile=1:a
    for spalte=1:b
        if mod(matrix_A,1)~=0
            matrix_A(zeile,spalte)={(Nan)};
        end
    end
end
print(matrix_A);

end




Hoffe hier kann mir jemand weiter helfen, das wäre sehr nett.

Ich bedanke mich im Voraus und verbleibe,

mfg
"Prophecy"
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.12.2012, 17:13     Titel:
  Antworten mit Zitat      
Hallo,

bitte nicht vergessen dazuzuschreiben, was nicht funktioniert.
Du solltest bei dem mod-Befehl nicht vergessen, das entsprechende Element anzusprechen.
Zudem würde ich die Klammern um das NaN weglassen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Prophecy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.12.12
Wohnort: Wien
Version: R2013b
     Beitrag Verfasst am: 09.12.2012, 17:27     Titel:
  Antworten mit Zitat      
Smile
Danke für die Info..

hab mal die Klammer weggelassen und mein Fehlermeldung sieht wie folgt aus:

??? Error using ==> inputcheck>LocalCheckHandles at 231
Handle input must be scalar, vector, or cell-array of vectors.

Error in ==> inputcheck at 27
pj.Handles = [ pj.Handles LocalCheckHandles(cur_arg) ];

Error in ==> print at 163
[pj, devices, options ] = inputcheck( pj, inputargs{:} );

Error in ==> test at 17
print(matrix_A);


EIN GROSSES PROBLEM IST, ICH WEISS NICHT GENAU WIE DAS MIT DEM MOD-BEFEHL FUNKTIONIERT.

Ich möchte eine ganze Array "scannen" und dann einfach die ungeraden Zahlen durch NaN ersetzen.

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
dmjr
Forum-Century

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2012, 17:38     Titel:
  Antworten mit Zitat      
Schau dir mal die Doku zu print an, ich glaube was du suchst ist disp.
Private Nachricht senden Benutzer-Profile anzeigen
 
Prophecy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.12.12
Wohnort: Wien
Version: R2013b
     Beitrag Verfasst am: 09.12.2012, 17:43     Titel:
  Antworten mit Zitat      
Danke @ dmjr,

*blöder fehler*

aber jetzt hab ich noch immer den Fehler, dass er mir 2mal die gleich Array ausgiebt, ohne die ungeraden Zahlen durch "NaN" zu ersetzen.

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.12.2012, 17:46     Titel:
  Antworten mit Zitat      
Hallo,

hast du denn meinen ersten Tipp gelesen?
Zitat:
Du solltest bei dem mod-Befehl nicht vergessen, das entsprechende Element anzusprechen.


Falls das noch nicht weiterhilft: Was ist der Code, den momentan ausführst?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Prophecy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.12.12
Wohnort: Wien
Version: R2013b
     Beitrag Verfasst am: 09.12.2012, 18:05     Titel:
  Antworten mit Zitat      
Sooo,

habs jetzt etwas unkonventionell gelöst und es funktioniert.

Meine letzte Frage,

gibt es für das o.g. Prozedere einen einfach Matlab-Befehl?

Unser Lektor meint, diesen gäbe es.....

Ich bedanke mich bei allen, die hier ihren Beitrag geleistet haben.

mfg
Arno
Private Nachricht senden Benutzer-Profile anzeigen
 
dmjr
Forum-Century

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2012, 18:11     Titel:
  Antworten mit Zitat      
Eine direkte Funktion dafür ist mir nicht bekannt, aber logical indexing mach das zu einem Einzeiler:
Code:


"mod(A,2)==1" ist 1 für alle Elemente die auf nan gesetzt werden sollen.

Dokumentation: http://www.mathworks.de/de/help/mat.....l?s_tid=doc_12b#bq7egb6-1 ("Logical Indexing")
Private Nachricht senden Benutzer-Profile anzeigen
 
Cherup

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2012, 18:20     Titel:
  Antworten mit Zitat      
Hi,

weißt du was genau eine Modulo-Operation macht?
Sry für die Frage aber dieser Fehler springt mir sofort ins Auge.
Eine Modulo-Operation gibt den Rest von einer Division zurück.
In deinem Code teilst du immer durch 1, daher kann es keinen Rest geben. Um ungerade Zahlen zu filtern musst du durch 2 teilen. Ausserdem musst du wie schon vorher geschrieben, das entsprechende Element der Matrix ansprechen anstatt wie bisher die gesamte Matrix.
Ich hoffe, ich konnte die weiterhelfen.

Viele Grüße
Cherup
 
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.