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

alle Variablen Input, alle Variablen output

 

Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.10.2015, 16:06     Titel:
  Antworten mit Zitat      
Hallo,

die erste Zeile sind wie kommentiert Beispieldaten. Da ich deine Daten nicht habe, habe ich mir einfach selbst welche erzeugt. Wenn du die Zeile ausführst, siehst du ja das Ergebnis.

die zweite Zeile definiert eine anonymes Function. Man kann sich das ähnlich vorstellen wie in Schule / Uni die Schreibweise f(x) = ...
http://www.mathworks.com/help/matla...../anonymous-functions.html

Wenn du die dritte und fünfte Zeile weglässt, kommen "komische" Spaltennamen heraus. Die dritte Zeile speichert die aktuellen Spaltennamen zwischen, die fünfte setzt im neuen Table die Spaltennamen zurück.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen


Zoe401
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 88
Anmeldedatum: 07.10.15
Wohnort: Bei Stuttgart
Version: R2015a
     Beitrag Verfasst am: 15.10.2015, 09:35     Titel:
  Antworten mit Zitat      
Was ist denn hieran Falsch(?):

nm ist mein Array mit mit 19 Zellen.
Und jetzt wollte ich die Zellen als Variable exportieren und zwar als n1, n2, n3...

Code:
function [n{i}] = export(nm)
num_files = length(nm);
for i = 1:num_files;
    n{i} = nm{1,i};
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.10.2015, 09:39     Titel:
  Antworten mit Zitat      
Hallo,

woraus schließt du denn, dass etwas falsch ist?
Bekommst du eine Fehlermeldung? Welche?
Ein unerwartetes Verhalten? Inwiefern?
Wie rufst du die Funktion auf, und mit welchem Input?

Ich würde als Funktionssignatur nur das wählen:
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Zoe401
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 88
Anmeldedatum: 07.10.15
Wohnort: Bei Stuttgart
Version: R2015a
     Beitrag Verfasst am: 15.10.2015, 09:45     Titel:
  Antworten mit Zitat      
In der ersten Zeile zeigt es mir einen roten Fehler an zwischen n und {i}:

Line 1: Invalid Syntax at {.Possibly,a),} or ] is missing.

Wenn ich ausführe kommt der gleiche Array "nm" nur nochmal als "n", das Array hat sich also nur kopiert.

ich möchte letztendlich
n1 = nm{1,1}
n2 = nm{1,2}.....
automatisieren. weil ich mal mehr und mal weniger Zellen habe.
Dabei soll es mir n1... als Variable ausspucken.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.10.2015, 10:16     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wenn ich ausführe kommt der gleiche Array "nm" nur nochmal als "n", das Array hat sich also nur kopiert.

Das ist ja auch genau das, was deine Funktion macht. Was soll sie denn machen?

Du bist doch immer noch bei den Tables, oder? Was hält dich denn davon ab, den Vorschlag von 14.10., 14:57 zu verwenden?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Zoe401
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 88
Anmeldedatum: 07.10.15
Wohnort: Bei Stuttgart
Version: R2015a
     Beitrag Verfasst am: 15.10.2015, 10:23     Titel:
  Antworten mit Zitat      
Weil das was anderes war, was jetzt funktioniert.
Ich habe ja jetzt meinen gemittelten Array.

Das nächste wäre jetzt eben den Table aus Zelle 1,1 rauszuholen und als Variable n01 stehen zu haben und dann weiter Zelle 1,2 als Variable n02 und dann Zelle 1,3 als Variable n03 und so weiter. Also einfach das Array zu entpacken um die Tables in meiner Workspace stehen zu haben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.10.2015, 10:32     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Das nächste wäre jetzt eben den Table aus Zelle 1,1 rauszuholen und als Variable n01 stehen zu haben und dann weiter Zelle 1,2 als Variable n02 und dann Zelle 1,3 als Variable n03 und so weiter.

Glaub uns doch bitte, dass das wirklich keinen Mehrwert bringt. Das sehen ja nicht nur wir so:
https://www.google.de/?gws_rd=ssl#q=avoid+eval+matlab

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Zoe401
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 88
Anmeldedatum: 07.10.15
Wohnort: Bei Stuttgart
Version: R2015a
     Beitrag Verfasst am: 15.10.2015, 13:04     Titel:
  Antworten mit Zitat      
So hats funktioniert.

Code:
numArrays = length(n);
for i = 1:numArrays
       eval(['n', int2str(i), '= n{:,i}']);
end

Wieso keinen Mehrwert? Jetzt funktioniert alles so wie ich es mir vorgestellt habe.

Danke für die ganze Hilfe!

Zuletzt bearbeitet von Zoe401 am 15.10.2015, 14:05, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.10.2015, 13:26     Titel:
  Antworten mit Zitat      
Hallo,

bei all diesen Beiträgen steht, warum man eval vermeiden sollte.
Findest du, dass dieser Code gut lesbar ist? Wie würdest du die ganzen nm(i) jetzt automatisiert weiterverarbeiten? Wohl wieder mit eval.

Bildlich gesprochen:
Jemand will sich ins Knie schießen. Nun drückt man ihm normalerweise keine Waffe in die Hand, sondern versucht ihm auszureden, sich ins Knie zu schießen.
Naja, du hast die Waffe jetzt eben doch gefunden. Ich hoffe, es wird nicht zu 'schmerzhaft'.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Zoe401
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 88
Anmeldedatum: 07.10.15
Wohnort: Bei Stuttgart
Version: R2015a
     Beitrag Verfasst am: 15.10.2015, 13:28     Titel:
  Antworten mit Zitat      
Sehr schön bildlich gesprochen! Wink

Ich will sie nicht weiter verarbeiten, jetzt will ich sie nur noch plotten auf verschiedene Weisen und verschiedene Kombinationen um sie vergleichen zu können.
Mehr soll mit den Daten jetzt nicht mehr passieren.

aber wie kann ich bei dem Code die Ausgabe unterdrücken?
Wenn ich den ablaufen lasse rechner er mir alles auf meinem Command Window und das dauert zu lange

Code:
numArrays = length(n);
for i = 1:numArrays
       eval(['n', int2str(i), '= n{:,i}']);
end


Mit einer function würde es ja gehen, aber ich weiss nicht was ich da dann als Output reinpacke?
Private Nachricht senden Benutzer-Profile anzeigen
 
Zoe401
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 88
Anmeldedatum: 07.10.15
Wohnort: Bei Stuttgart
Version: R2015a
     Beitrag Verfasst am: 15.10.2015, 14:37     Titel:
  Antworten mit Zitat      
Code:
function [???] = createtables(n)
numArrays = length(n);
for i = 1:numArrays;
       eval(['n', int2str(i), '= n{:,i}']);
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.10.2015, 14:45     Titel:
  Antworten mit Zitat      
Hallo,

tja, schon die erste Gemeinheit von eval. Normal sagt man ja: Strichpunkt ans Ende -nur hilft er da nichts.

Vermutliche Lösung:

Code:
numArrays = length(n);
for i = 1:numArrays
       eval(['n', int2str(i), '= n{:,i};']);
end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Zoe401
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 88
Anmeldedatum: 07.10.15
Wohnort: Bei Stuttgart
Version: R2015a
     Beitrag Verfasst am: 15.10.2015, 14:53     Titel:
  Antworten mit Zitat      
JA das war die Lösung, vielen Dank mal wieder! Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.