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

problem beim speichern von daten bei schleifendurchlauf

 

xwinnipuhx
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 23.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2012, 11:31     Titel: problem beim speichern von daten bei schleifendurchlauf
  Antworten mit Zitat      
hallo,
ich muss ein paar matrixvergleiche durchführen, dafür lasse ich mir folgende matrizen generieren:
Code:

img = [10 2 5 9 8;...
      9 7 10 3 4;...
      5 6 7 8 10;...
      10 2 3 4 9;...
       9 7 3 2 9];

folge = [0 1 2 1 0];
Matrix = repmat(folge,5,1);

C=cell(1,4);
C{1} = img.*Matrix;
for k = 1:4    
     C{k+1} = img.*[zeros(size(img,2),k),Matrix(:,1:end-k)];
end
 


in C stehen nun 5 5x5-Matrizen
nun möchte ich aus jeder Matrix die Spalte 1 extrahieren und in einer neuen Matrix speichern.
Code:

M = cell(1,5);
% a = cell(1,5);

for l = 1:columns(img)   % schleife über die 4 Matrizen
   for k = 1:columns(img)   %schleife über die 5 spalten
      M{l} = C{l}(:,1);   % die 5 ersten spalten werden nur nacheinander
                     % ausgegeben
       
   end
   
end
a = cell2mat(M)      % vereint die jeweiligen Spalten zu einer neuen Matrix
 


das klappt soweit auch. mein problem ist nun wie ich den vorgang automatisiere, dass für jede spalte aus allen matrizen eine matrix erzeugt wird. --> matrizen müssten wieder entstehen.

wenn ich in der zweiten sschleife aber das mache:
Code:

M{l} = C{l}(:,k);
 


habe ich zum schluß in a nur die zuletzt entstandene matrix stehen die spalte 5 aus allen matrizen enthält.
wie schaffe ich es nun auch die anderen zu speichern?
meine idee ist das auch a eine cell sein muss aber wie genau keine ahnung
Private Nachricht senden Benutzer-Profile anzeigen


xwinnipuhx
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 23.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2012, 12:05     Titel:
  Antworten mit Zitat      
brauche bitte dringend hilfe

Zuletzt bearbeitet von xwinnipuhx am 29.03.2012, 12:59, insgesamt 2-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 29.03.2012, 12:19     Titel:
  Antworten mit Zitat      
Code:
img = [10 2 5 9 8;...
      9 7 10 3 4;...
      5 6 7 8 10;...
      10 2 3 4 9;...
       9 7 3 2 9];

folge = [0 1 2 1 0];
Matrix = repmat(folge,5,1);

C=nan(5,5,5);
C(:,:,1) = img.*Matrix;
for k = 1:4    
     C(:,:,k+1) = img.*[zeros(size(img,2),k),Matrix(:,1:end-k)];
end

for l=1:size(C,2)
    b(:,:,l)=reshape(C(:,l,:),5,5);
end
Private Nachricht senden Benutzer-Profile anzeigen
 
xwinnipuhx
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 23.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2012, 12:59     Titel:
  Antworten mit Zitat      
danke dir Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
xwinnipuhx
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 23.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2012, 13:16     Titel:
  Antworten mit Zitat      
könnte man das rein theoretisch auch mit zwei schleifen versuchen?
und wenn ja wie
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 29.03.2012, 13:22     Titel:
  Antworten mit Zitat      
man kann fast alles mit belibig vielen schleifen lösen.
Private Nachricht senden Benutzer-Profile anzeigen
 
xwinnipuhx
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 23.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2012, 13:38     Titel:
  Antworten mit Zitat      
und wie würde es bei meinem beispeil mit schleifen gemacht werden?
meine letzte überlegung dazu war:
Code:

M = cell(1,columns(img));
for k = 1:columns(img)
   M{k} = zeros(rows(img),columns(img));
end



for l = 1:columns(img)   % schleife über die 4 Matrizen
   C{l}; % Bsp. starte mit Matrix C{1}

   for k = 1:columns(img)   % schleife über die 5 spalten
      M{l}(:,k) = C{l}(:,k);  
                     

      end
   
end
 


liefert jedoch auch nicht das gewünschte ergbenis.
ich wird halt gern auch die variante mit schleife verstehen
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.