|
|
Dringend HILFE: Einlesen von Daten aus Cell Array |
|
tommylabamba |
Forum-Fortgeschrittener
|
|
Beiträge: 87
|
|
|
|
Anmeldedatum: 08.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.07.2012, 13:16
Titel: Dringend HILFE: Einlesen von Daten aus Cell Array
|
|
Ich habe ein Cell Array mit
1 x 10 cell
und da drin befinden sich 10 verschiedene Matrizen mit unterschiedlichen größen z.B. 23x33, 12x33, 321x33 usw.
nun lese ich die Daten aus dem Workspace heraus aus mit folgenden Bausteinen:
- constant (die Cell Variable mit den 10 Matrizen)
- diese geht in eine Matlab Funktion rein
ich möchte das die Funktion für alle (also die 10 Matrizen der Cell) die Werte berechnet. Das tut sie aber nicht, sie berechnet nur die Werte der ersten Matrix der Cell array. Wieso?
In der Constanten gebe ich vor Variablenname{1:10} aus workspace auslesen.
In der Funktion gebe ich nur Variablenname als INPUT vor, d.h. ohne die {1:10} Auswahl.
Die Cell array aus dem Workspace ist Zeitunabhängig, deshalb als Constant deklariert.
Ich möchte die verarbeiteten Daten wieder in Cell speichern.
|
|
|
|
|
Goofy9020 |
Forum-Century
|
|
Beiträge: 164
|
|
|
|
Anmeldedatum: 10.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2009a, 2010b
|
|
|
|
|
|
Verfasst am: 18.07.2012, 13:32
Titel:
|
|
Kann dir leider nicht ganz folgen.
Es wäre sicher leichter wenn du den Code hier posten würdest.
|
|
|
tommylabamba |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 87
|
|
|
|
Anmeldedatum: 08.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.07.2012, 13:50
Titel:
|
|
Variablen:
a % 1 doublewert
variablename{1:10} % cell array mit 10 matrizen
-------------------------------------------------------------
Input Baustein "Constant":
variablenname{1:10} % auslesen aus Workspace
-------------------------------------------------------------
Funktionsbaustein Matlab Code:
function output = berechnen(a,b,c,variablenname)
output = variablenname(:,(a+11))==1;
return;
-----------------------------------------------------
Output Baustein "To Workspace" names Test
Es läuft druch, berechnet aber nur die erste Matrix des Cell Arrays!
wenn ich als Input variablename{1:10} schreibe, streicht er diese weg.
|
|
|
Goofy9020 |
Forum-Century
|
|
Beiträge: 164
|
|
|
|
Anmeldedatum: 10.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2009a, 2010b
|
|
|
|
|
|
Verfasst am: 18.07.2012, 13:59
Titel:
|
|
Für den Index eines cell Arrays solltest du "{ }" verwenden. Vlt. liegt hier der Fehler.
Bsp.:
|
|
|
tommylabamba |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 87
|
|
|
|
Anmeldedatum: 08.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 18.07.2012, 14:33
Titel:
|
|
wie verarbeite ich aber das Cell array in der funktion damit er alle arrays berechnet und nicht nur den ersten?
so:
output = variablenname(:,:,(a+11))==1;
oder so:
output = variablenname{1:10}(:,(a+11))==1;
oder wie?
in der Funktion muss ich doch auch sagen welche cell er verarbeiten soll oder nicht? ich gebe zwar als input den cell bereich 1:10 vor, aber er berechnet ja nur den ersten cell!
|
|
|
Goofy9020 |
Forum-Century
|
|
Beiträge: 164
|
|
|
|
Anmeldedatum: 10.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2009a, 2010b
|
|
|
|
|
|
Verfasst am: 19.07.2012, 06:24
Titel:
|
|
mit {} greifst du auf die einzelnen Zellen im Cell Array zu. Mit () auf die Werte innerhalb der ausgewählten Zelle dann.
z.B.: Erste Zelle und dort dann auf das Element in der 2 Reihe und 4 Spalte
CellArray{1}(2,4)
Du kannst auch jedes Element mit einer for Schleife durchgehen
|
|
|
tommylabamba |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 87
|
|
|
|
Anmeldedatum: 08.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.07.2012, 08:51
Titel:
|
|
das ist mir klar. Aber in der Funktion muss ich mit varargin arbeiten oder?
Die vorliegende Beschreibung funktioniert aber trotzdem nicht:
varargin ist ein Cell-Array und enth¨alt die m¨oglichen restlichen Argumente
einer Argumentliste. Beispiel:
Funktionskopf: function fcn(x,y,varargin)
Funktionsaufruf: >> fcn(x,y,p1,p2)
varargin enth¨alt dann die Werte von p1 und p2, d.h. varargin={p1,p2}.
Funktionsaufruf: >> fcn(x,y)
Hier ist varargin leer.
Zur Info:
Ich habe als INPUT für die Fuktion eine constante am Eingang:
variablenname{1:10}
als Fehlermeldung kommt mit output=berechnen(variablenname,varargin):
--> Top-level function cannot have varargin
|
|
|
Goofy9020 |
Forum-Century
|
|
Beiträge: 164
|
|
|
|
Anmeldedatum: 10.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2009a, 2010b
|
|
|
|
|
|
Verfasst am: 19.07.2012, 09:08
Titel:
|
|
|
|
tommylabamba |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 87
|
|
|
|
Anmeldedatum: 08.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.07.2012, 09:38
Titel:
|
|
Vielen Dank für die Beschreibung.
Leider verstehe ich die Beschreibung nicht.
% %#codegen
% function varargout = inch_2_cm(varargin)
% for i = 1:length(varargin)
% varargout{i} = varargin{i} * 2.54;
% end
%
% To fix the problem, write a top-level function that specifies a fixed number of inputs and outputs and then call inch_2_cm as an external function or subfunction, as in this example:
%
% %#codegen
% function [cmL, cmW, cmH] = conv_2_metric(inL, inW, inH)
% [cmL, cmW, cmH] = inch_2_cm(inL, inW, inH);
%
% function varargout = inch_2_cm(varargin)
% for i = 1:length(varargin)
% varargout{i} = varargin{i} * 2.54;
% end
Muss ich im Hauptprogramm eine Funktion dazu schreiben oder was?
Wäre schön wenn jemand mir das anhand meines Beispiels erläutern könnte.
Zuletzt bearbeitet von tommylabamba am 19.07.2012, 09:41, insgesamt einmal bearbeitet
|
|
|
Goofy9020 |
Forum-Century
|
|
Beiträge: 164
|
|
|
|
Anmeldedatum: 10.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2009a, 2010b
|
|
|
|
|
|
Verfasst am: 19.07.2012, 09:40
Titel:
|
|
Du darfst anscheinend bei deiner Hauptfunktion nicht das Schlüsselwort varargin verwenden. Erst in einer Unterfunktion dann.
|
|
|
tommylabamba |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 87
|
|
|
|
Anmeldedatum: 08.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.07.2012, 10:12
Titel:
|
|
tommylabamba hat Folgendes geschrieben: |
Vielen Dank für die Beschreibung.
Muss ich im Hauptprogramm eine Funktion dazu schreiben oder was?
Wäre schön wenn jemand mir das anhand meines Beispiels erläutern könnte. |
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|