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

Funktion für Excel Wertzuordnung

 

wusa
Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 20.06.17
Wohnort: Berlin
Version: 2021
     Beitrag Verfasst am: 20.03.2021, 09:57     Titel: Funktion für Excel Wertzuordnung
  Antworten mit Zitat      
Hallo!
Ich möchte Folgendes machen:
Code:

% Uebung_Tabellen.m
clear; close; clc

%   zuerst werde ich eine Excel-Datein einlesen
%   xlsread('Testseite.xlsx);

%    Hier steht im spaeteren Verlauf eine Funktion, die berechnet mir fuer Tabelle A den "x-Wert"
%  14
%   also x = 14  
%   fuer meinen switch Aufruf

%   Nun folgt eine Auswahl in Abhaengigkeit von x ein y zuordnen
%   ist es moeglich, das anders (mit einer "find in excel" oder aehnlicher
%   Funktion* zu loesen, so dass mit der Zelle fuer "14" die Nachbarzelle
%   automatisch der zugeordnete Wert ist?

switch(x)
 case 14
    y = 15004;             %  *hier sollte die Funktion für Nachbarzellen-Wert sein
 case 15
    y = 24277;
 case 16
    y = 39281;
 
 otherwise
     disp('Kein Wertepaar gefunden. x ungueltig!');
 end

 


Ich habe ein bisschen recherchiert, was es im mathworks Forum zu Excel Funktionen gibt. Die Werte einer Tabelle sollten fast immer in ein cell Array gegeben werden.

Kann mir jemand einen Tipp geben, wie ich den ersten Schritt für meine Aufgabe mache?

Viele Grüße
Michael

Uebung_Tabellen.m
 Beschreibung:

Download
 Dateiname:  Uebung_Tabellen.m
 Dateigröße:  774 Bytes
 Heruntergeladen:  270 mal
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 20.03.2021, 17:00     Titel:
  Antworten mit Zitat      
Hast du dir die Matlab-Hilfe zu xlsread durchgelesen?
Wenn du diesen Befehl zum Einlesen nutzt, kannst du die Tabelle auch als Matrix einlesen.

Code:
[num,txt,raw] = xlsread(Tabellenname)


Mittlerweile wird aber empfohlen, lieber readtable zu nutzen.
Auch hierzu ist es sinnvoll, sich erstmal mit der Hilfe auseinerander zu setzen.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
wusa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 20.06.17
Wohnort: Berlin
Version: 2021
     Beitrag Verfasst am: 21.03.2021, 11:10     Titel:
  Antworten mit Zitat      
Hallo Martina,
vielen Dank für deine Antwort. Ja, ich habe jetzt auch festgestellt, dass oben nicht empfohlen steht.
Also habe ich mit readtable die nächsten Schritte gemacht.
Es sieht wahrscheinlich noch eigenartig aus, was ich mit true und false x kommentiere.
Die ersten Zeilen sind ja meine Bezeichner:
Für 1. Spalte unter 'A' sind die x Werte.
Für 2. Spalte unter 'B' sind die y Werte.
(Excel Datei wurde verändert, ist nun Testseite_b.
Code:

% Uebung_Tabellen_2
clear; close; clc

Tabelle_1_readIn = readtable('Testseite_b.xlsx', 'ReadVariableNames', true);
Tabelle_1 = Tabelle_1_readIn(:,[1:2 6:7]);       %  Nur noetige Spalten zu erhalten

%    Hier steht im spaeteren Verlauf eine Funktion, die berechnet mir fuer Tabelle A den "x-Wert"
%   fuer meinen switch Aufruf

%   Nun folgt eine Auswahl in Abhaengigkeit von x ein y zuordnen
%   ist es moeglich, das anders (mit einer "find in excel" oder aehnlicher
%   Funktion* zu loesen, so dass mit der Zelle fuer "14" die Nachbarzelle
%   automatisch der zugeordnete Wert ist?

false_x = find(Tabelle_1.A(:) == 14);                            % Mit x eine bestimmte Zeile waehlen. '14' erstmal zum Testen gewaehlt
 
 %  Zum Ausprobieren habe ich ein paar Zeilen ohne den switch Aufruf
 %  ausprobiert
 %  Dies funktionierte nicht. Weiss nicht warum ?
 %       Wert = find(Tabelle_1.B(: ) == x)      
 
 %   Das funktionierte:
 %       Wert = Tabelle_1.B(x)
 
 switch(false_x)                           % ... true_x  ist gleich  false_x minus 1
     case 14                                   %  Das wird spaeter durch ein hier nicht aufgefuehrtes Funktionsergebnis ersetzt
         y = Tabelle_1.B(false_x);  
         true_x = 14;                        %  Das mit meinem true und false x stoert mich gerade, habe ich nun erstmal so
                                                    %  Muesste man im Vorfeld schon anders angehen, nicht wahr?                                                                                          
     case 15
         y = Tabelle_1.B(false_x);
     case 16
         y = Tabelle_1.B(false_x);
  otherwise
     disp('Kein Wertepaar gefunden. x ungueltig!');
 end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
wusa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 20.06.17
Wohnort: Berlin
Version: 2021
     Beitrag Verfasst am: 21.03.2021, 11:18     Titel:
  Antworten mit Zitat      
Die Excel-Tabelle lässt sich nicht anhängen.
Also Zeile 1 ist einfach:
A B C D

Plötzlich funktioniert das mit der richtigen Zeile. Ich habe nach dem Kompilieren nun true_x gleich false_x,

obwohl das false_x noch in Zeile 15 ist.

Viele Grüße
Michael

Uebung_Tabellen_2.m
 Beschreibung:
Skript

Download
 Dateiname:  Uebung_Tabellen_2.m
 Dateigröße:  1.71 KB
 Heruntergeladen:  254 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
wusa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 20.06.17
Wohnort: Berlin
Version: 2021
     Beitrag Verfasst am: 21.03.2021, 11:22     Titel:
  Antworten mit Zitat      
Die Datei.

Testseite_b.xls
 Beschreibung:

Download
 Dateiname:  Testseite_b.xls
 Dateigröße:  16.32 KB
 Heruntergeladen:  251 mal
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.