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

Speichern einer Matrix im Array möglich?

 

sanja555
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 08.06.08
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 08.06.2008, 11:40     Titel: Speichern einer Matrix im Array möglich?
  Antworten mit Zitat      
Hallo Leute,

ich habe folgendes Problem: ich möchte Linien in einem Array abspeichern. Jede Linie enthält n Punkte, die wiederum aus 3 Koordinaten bestehen, d.h. eine Linie ist eine 3xn-Matrix. Wie kann ich das realisieren? z.B. in Java ist möglich dreidimensionale Felder zu bilden, wo ein Element auf ein zweidimensionales Feld zeigt. Ist so was auch in Matlab möglich? Oder sind structs hier DIE Lösung? kann mir jemand schnell zeigen wie ich einen struct mache?

Danke schon ma...
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 09.06.2008, 09:24     Titel:
  Antworten mit Zitat      
Moin Sanja,

leider verstehe ich dein Problem nicht. Was genau möchtest du machen?

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
keloid
Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 09.06.2008, 11:15     Titel:
  Antworten mit Zitat      
Ich denke, Du koenntest das als mx3xn-Matrix loesen.
m ist dann dabei die Nummer der Linie, und die 3xn dazugehoerigen Werte sind die Linienkoordinaten.

Die Matrix wird dabei wie jede andere Matrix auch behandelt:
Code:

m = ...; % Anzahl Linien
n = ...; % Anzahl Punkte pro Linie

M = zeros(m,3,n);

L1 = M(1,:,:); % Alle Koordinaten der Linie 1
K1 = M(:,1,:); % Die erste Koordinate aller Punkte aller Linien
P1 = M(:,:,1); % Die Koordinaten des jeweils ersten Punktes aller Linien
 


Natuerlich kann man statt den Einsern auch beliebige andere Indizes verwenden, solange man auf ein Matrixelement zugreift.
Private Nachricht senden Benutzer-Profile anzeigen
 
Matze E.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2009, 17:34     Titel:
  Antworten mit Zitat      
Servus,

also ich habe es mit diesem Tipp mal versucht, leider erfolglos. Meine Problemumgebung dazu:
Ich möchte mit einer Webcam über einen Zeitraum von wenigen Sekunden Bilder "schießen" und diese in einem Array anordnen, sodass ich hinterher wieder darauf zugreifen kann.

Code:

preview(video);
pause(2);
i = 0;

m = 10;
n = 240;
a = 320;

M = zeros(m,a,n);

while(i<10)
    i = i+1;
    data = getsnapshot(video);
    M(i,:,:) = data;
    figure;
    image(data);
    pause(1);
end
 



Als Fehlermeldung bekomme ich nur folgendes:

??? Error using ==> comeventcallback at 35
Error firing event 'ButtonPressed' to 'axis'.

Warning: Error occurred while evaluating listener callback.


Ich habe schon herausgefunden, dass der Fehler in der Zeile:
Code:
  M(i,:,:) = data;

liegen muss. Also dachte ich, ich müsste nur die Variablen a und n vertauschen, doch das führte auch nicht zum Erfolg.

Hat hier jemand eine Idee?

Viele Grüße
Matthias
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 04.08.2009, 20:58     Titel:
  Antworten mit Zitat      
Könnte es sein, dass dein Array data nicht genau 320x240 Werte enthält ? Einfach einen Pausenpunkt vor die entsprechende Fehlerzeile legen und size(data)
Private Nachricht senden Benutzer-Profile anzeigen
 
Matze E.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2009, 12:00     Titel:
  Antworten mit Zitat      
Vielen Dank Andy Embarassed

data hat die Größe 240 320 3 und mit
Code:
 help getsnapshot


bekam ich dann die Information, warum data diese Größe hat:

H Image height, as specified in the ROIPosition property
W Image width, as specified in the ROIPosition property
B Number of color bands, as specified in the NumberOfBands


Mit einer kleinen Änderung funktioniert es also jetzt hervorragend. Vielen Dank nochmal für die Hilfe.

Greets
 
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.