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

Vektoren dynamisch in Array schreiben

 

ali.k
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 30.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.12.2013, 14:08     Titel: Vektoren dynamisch in Array schreiben
  Antworten mit Zitat      
Hi!

Ich habe ein Signal, von dem ich bestimmte Bereiche in ein Array schreiben möchte. Das Signal ist ein Vektor (M x 1). Mit "Signal(a:b,1)" habe ich ja den gewünschten Bereich (a-b) des Vektors.

Nun möchte ich diesen bereich in ein Array bzw. Vektor A schreiben, damit ich später durch "A(x)" jeden Vektor aufrufen kann.

Ich habe das so gemacht:

A(zaehl,1)=Signal(a:b,1)

Bekomme aber die Fehlermeldung:

"??? Subscripted assignment dimension mismatch.

Error in ==> Zeit at 28
A(zaehl,1)=Signal(a:b, 1);"

Da habe ich wohl zwei Sachen versucht zuzuordnen, die so nicht zuzuordnen gehen. Weiß jemand einen Rat?

Danke schonmal im Voraus.
Gruß

€

Hab´s mit geschweiften Klammern versucht (A{...}=), kriege nur

Code:
Columns 214420 through 214422


Als Einträge.
Private Nachricht senden Benutzer-Profile anzeigen


Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 11.12.2013, 15:45     Titel:
  Antworten mit Zitat      
Hallo,

im Prinzip schon ganz okay. Du versucht aber einer Matrix an einer Stelle einen ganzen Vektor zuzuweisen. Das geht nicht und daher kommt die Fehlermeldung. Die geschweiften Klammern sind hier goldrichtig, so kannst du verschieden lange Elemente abspeichern und wieder auslesen:

Code:
% Signal und Bereichgrenzen
M = 1000;
Signal = rand(M,1);
a = 1; b = 19; c = 187;

% wegspeichern
A{1} = Signal(a:b);
A{2} = Signal(a:c);

% auslesen
A{1}
A{2}


Viele Grüße,
Nras
Private Nachricht senden Benutzer-Profile anzeigen
 
ali.k
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 30.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2013, 08:38     Titel:
  Antworten mit Zitat      
Hi und danke für den Tip, werde ich gleich mal ausprobieren!

Hast du eventuell noch ein Stichwort für mich, damit ich das Prinzip in der Matlab Hilfe nachlesen kann?
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 12.12.2013, 09:41     Titel:
  Antworten mit Zitat      
Hallo,

das läuft unter dem Stichwort cell arrays. In der Hilfe findest du dann ziemlich viel dazu.

Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
ali.k
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 30.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2013, 21:26     Titel:
  Antworten mit Zitat      
PS es hat übrigens geklappt, danke für die Hilfe has mir echt weiter geholfen.
Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
ali.k
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 30.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2014, 10:11     Titel:
  Antworten mit Zitat      
Muss das Thema wieder aufgreifen.

Ich habe jetzt ein Cell Array mit "zaehl" Einträgen (Vektoren). Wie kann ich die einzelnen Werte addieren und Mittelwerte bilden?

Jedesmal, wenn ich eine Ausgabe starte ("A(1:zaehl)") gibt er nur folgendes aus:

Code:
 Columns 1 through 5

    [84x1 double]    [86x1 double]    [85x1 double]    [86x1 double]    [83x1 double]

  Columns 6 through 10

    [86x1 double]    [85x1 double]    [84x1 double]    [91x1 double]    [88x1 double]

  Column 11

    [85x1 double]


Ich würde aber gerne auf die Vektoren zugreifen, die gespeichert sind.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 10.01.2014, 11:48     Titel:
  Antworten mit Zitat      
Hallo

über eine FOR-Loop
so:

Code:

% hier durch deine Cell ersetzen:
A = {round(rand(84,1)*10), round(rand(86,1)*10)};


meanval = zeros(size(A))
sumval   = zeros(size(A))
for k=1:length(A)
  %
  % Mittelwerte
  meanval(k) =mean(A{k})
  % Summe
   sumval(k)   = sum(A{k})
end

 
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 10.01.2014, 11:49 Uhr von denny
Von Signalverarbeitung nach Programmierung
 
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.