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

Nonzero-Einträge in 3-D Matrix zählen

 

Wallace1984
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 09.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2011, 11:47     Titel: Nonzero-Einträge in 3-D Matrix zählen
  Antworten mit Zitat      
Hallo zusammen!

Ich häng hier an einem recht trivialen, aber doch scheinbar nicht so simpel zu lösendem Problem und hoffe ihr könnt mir helfen!!!

-Ich habe eine 3-D Matrix [51,8,500].
-Diese Matrix enthält auch "Nulleinträge".
-Nun würde ich die Matrix gerne mitteln und auf die Form [51,8] bringen. -Dafür soll Matlab die Summe bilden und anschließend durch die Anzahl der "Nonzero-Eintäge" teilen.

Das oben erläuterte schaffe ich zu lösen mit:

Code:
   for j=1:51;
        for k=1:8;
            Matrix51x8(j,k)= sum(Matrix51x8x500(j,k,:));
        end
    end

for j=1:51
    for k=1:8
        Zaehler = nnz (j,k,:)
        Matrix51x8(j,k)= Matrix51x8(j,k)/Zaehler);
    end
end


...mein Problem besteht nun darin, dass Matlab mir ein "Too many input arguments" ausgibt, also die Funktion nnz für mein Vorhaben zu klein ist!?

Hat einer von euch eine alternative Idee, oder sieht meinen Fehler???

Vielen Dank schon einmal im Voraus!!!
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: 26.01.2011, 11:56     Titel:
  Antworten mit Zitat      
Hallo,

MATLAB hat eine äußerst gravierende Schwäche: es kann nicht hellsehen Wink Es weiß also nicht, dass du die Anzahl der Nullen in Teilen der Matrix Matrix51x8x500 suchst. Du meintest wohl:
Code:
Zaehler = nnz(Matrix51x8x500(j,k,:))


Fast noch schlimmer sind die for-Schleifen anzusehen. Das ganze geht auch so:
Code:
Matrix51x8 = sum(Matrix51x8x500, 3);
Nonzeros = sum(Matrix51x8x500 ~= 0, 3);
Matrix51x8 = Matrix51x8 ./ Nonzeros;


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 26.01.2011, 11:57     Titel:
  Antworten mit Zitat      
Hallo Wallace1984,
es ist immer hilfreich die komplette Fehlermeldung zu posten.

Ansonsten sagt die Fehlermeldung aus, dass du zu viele Argumente einer Funktion übergibst. Da du nnz angesprochen hast, habe ich kurz in die Hilfe geschaut und dort steht:
Zitat:

n = nnz(X)

Als einzig zu verwendete Syntax. Sprich nnz akzeptiert nur ein Argument.

Du hingegen übergibst mit
Code:
mehr als ein Argument.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Wallace1984
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 09.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2011, 13:06     Titel:
  Antworten mit Zitat      
Moinsen!

Ich find das zwar reichlich uncool, das Matlab nicht mit einem "Hellseher-App" ausgestattet ist, danke aber vielmals, dass ihr mir geholfen habt Matlab diesen Fehler zu verzeihen Wink

Schöne Grüße
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: 26.01.2011, 22:34     Titel:
  Antworten mit Zitat      
Hallo Harald,

Zitat:
MATLAB hat eine äußerst gravierende Schwäche: es kann nicht hellsehen ;)

Du hast dies vergessen:
Code:
feature('dwim')

Gruß, Jan
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.