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

dynamische MAtrizen

 

Matlado

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2015, 16:12     Titel: dynamische MAtrizen
  Antworten mit Zitat      
Hallo zusammen,

ich habe folgendes Problem:
Ich habe eine 3 x Np Matrix.

Wenn etwas bestimmtes eintritt (M(3,k) < (1/Np^2)) möchte ich die komplette Spalte löschen, ansonsten möchte ich auf eine weitere Bedingung überprüfen und die Spalte die vorher mit "0" beschrieben- bzw. gelöscht wurde überschreiben.

Code:
% Das ist mein Programm.

for k = 1:Np
if(M(3,k) < (1/Np^2))
M(:,k) = 0;
anzahl_delete = anzahl_delete + 1;
else if (M(3,k) > (1.5/Np))
kloon_par = floor(M(3,k) * Np);
for(lauf_var = 1: kloon_par)
for z=1:Np
% Hier noch überprüfen ob = in der Spalte und wenn Ja
M(:,z) = M(:,k);
break;
end
end
end
end
end

 


Es sieht sehr unübersichtlich aus, deswegen nochmal mit meinen eigenen Worten:

ich habe eine 3 x Np Matrix. Bei einem bestimmten Ereignis möchte ich eine Spalte komplett löschen und bei einem anderen Ereignis Spalten hinzufügen. Diese sollen wenn möglich genau die Spalten ersetzen die ich vorher gelöscht (bzw. mit "0" belegt habe).

Wie macht man so was? Zumindest der grobe Weg wäre wünschenswert.

Danke


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: 06.10.2015, 19:31     Titel:
  Antworten mit Zitat      
Den Code formatieren hilft die Übersichtlichkeit zu bewahren Smile ...zudem hat er zuviele "ends".


Code:

for k = 1:Np
  if(M(3,k) < (1/Np^2))
    M(:,k) = 0;
    anzahl_delete = anzahl_delete + 1;
  else if (M(3,k) > (1.5/Np))
    kloon_par = floor(M(3,k) * Np);
    for(lauf_var = 1: kloon_par)
      for z=1:Np
        % Hier noch überprüfen ob = in der Spalte und wenn Ja
        M(:,z) = M(:,k);
        break;
      end % for z
    end % for ?
  end % if
end % for k
end % ???
 



Wenn du schon dynamisch wachsen willst, dann vlt auch gar nicht erst zu groß allokieren?

Code:

idx = 1;
M = [];
for k = 1:Np
  if (M(3,k) >= (1/Np^2)) % >= anstatt <
    M(:,idx) = % irgendwas tolles ....
    idx += 1;
  end
end % for k
 


Je nach dem was du machst und wie groß deine Daten sind, ist das u.U. super langsam.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
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 - 2024 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.