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

Fehler beim erstellen einer Funktion aus Daten von Excel

 

janst1
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 25.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2020, 11:04     Titel: Fehler beim erstellen einer Funktion aus Daten von Excel
  Antworten mit Zitat      
Hallo zusammen,

ich habe eine Tabelle mit Messdaten aus Excel importiert.
x ist Spalte 1 mit Zeit und y ist Spalte 2 mit den Messwerten.

Wenn ich die Daten plotten lasse, funktioniert es: plot(x,y);

Wenn ich die Daten aber in eine Funktion schreiben will f(x)=y;
dann gibt er mir folgenden Fehler aus:
"Subscript indices must either be real positive integers or logicals."

Ich verstehe den Fehler und wenn ich eine Testtabelle mir ganzen Zahlen erstelle, funktioniert es auch. Aber es muss doch eine Möglichkeit geben, das Ganze mit Kommazahlen zu machen.

Ich möchte das machen, um später mit der Funktion f weiter arbeiten zu können.
Will damit eine Fast Fourier-Transformation machen g=fft(f);


Hoffe ihr könnt mir weiter helfen.
VG Jan
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.06.2020, 12:48     Titel:
  Antworten mit Zitat      
Hallo,

poste bitte deinen konkreten Code, am besten mit einem Datenbeispiel.
f(x)=y; ist in MATLAB keine sinnvolle Anweisung. Vermutlich gibst du in MATLAB etwas anderes ein, aber die entscheidende Frage ist dann: was?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
janst1
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 25.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2020, 13:23     Titel:
  Antworten mit Zitat      
clear all
close all
clc


%% Import data from spreadsheet
% Script for importing data from the following spreadsheet:
%
% Workbook: C:\Users\janst\Google Drive\H-BRS\7. Semester\Bachelorarbeit\Vibrationsmessung\M1.xlsx
% Worksheet: Tabelle1
%
% Auto-generated by MATLAB on 25-Jun-2020 14:05:03

%% Setup the Import Options and import the data
opts = spreadsheetImportOptions("NumVariables", 2);

% Specify sheet and range
opts.Sheet = "Tabelle1";
opts.DataRange = "A1:B5";

% Specify column names and types
opts.VariableNames = ["VarName1", "VarName2"];
opts.VariableTypes = ["double", "double"];

% Import the data
tbl = readtable("C:\Users\janst\Google Drive\H-BRS\7. Semester\Bachelorarbeit\Vibrationsmessung\Test.xlsx", opts, "UseExcel", false);

%% Convert to output type
VarName1 = tbl.VarName1;
VarName2 = tbl.VarName2;


x = VarName1;
y = VarName2;
f(x)=y;
plot(f);
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

da würde ich wirklich
Code:

verwenden. Eine Funktion in dem Sinn ist das ja nicht, da du nur ein paar Datenpunkte hast.

Wenn durch die Datenpunkte z.B. eine Exponentialfunktion gelegt werden soll, dann würde ich deren Parameter mit lsqcurvefit oder ähnlichem schätzen. Diese Funktion kann man dann auch mit plotten.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
janst1
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 25.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2020, 14:56     Titel:
  Antworten mit Zitat      
ja in dem Beispiel habe ich nur ein paar Datenpunkte.
Aber die richtigen Messwerte haben 25600 Datenpunkte.

Es nützt mir nichts nur zu plotten.
Ich möchte wie oben schon geschrieben mit "f" noch weiter rechnen.
Aus dem Plot heraus geht das nicht
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Ich möchte wie oben schon geschrieben mit "f" noch weiter rechnen.

Was genau möchtest du mit f machen?
Solange du "nur" Datenpunkte hast, ist das keine Funktion - egal wie viele Datenpunkte du hast.
Einen Vorschlag, wie du eine Funktion bekommen kannst, habe ich dir bereits gemacht. Eine Alternative kann Interpolation sein ( interp1 ).

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
janst1
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 25.06.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2020, 09:05     Titel:
  Antworten mit Zitat      
Habs jetzt mal umgeschrieben mit der Orignialtabelle:

Code:


clear all
close all
clc

%% Import data from spreadsheet
% Script for importing data from the following spreadsheet:
%
%    Workbook: C:\Users\janst\Google Drive\H-BRS\7. Semester\Bachelorarbeit\Vibrationsmessung\M1.xlsx
%    Worksheet: Tabelle1
%
% Auto-generated by MATLAB on 26-Jun-2020 09:53:09

%% Setup the Import Options and import the data
opts = spreadsheetImportOptions("NumVariables", 5);

% Specify sheet and range
opts.Sheet = "Tabelle1";
opts.DataRange = "A2:E25601";

% Specify column names and types
opts.VariableNames = ["Zeit", "V", "mV", "g", "ms2"];
opts.VariableTypes = ["double", "double", "double", "double", "double"];

% Import the data
M1 = readtable("C:\Users\janst\Google Drive\H-BRS\7. Semester\Bachelorarbeit\Vibrationsmessung\M1.xlsx", opts, "UseExcel", false);


t = M1.Zeit;
Signal = M1.g;


dt=t(2)-t(1); % Schrittweite
Fa = 1 / dt; % Abtastfrequenz
Fg = Fa / 2; % Grenzfrequenz, hier wird das Spektrum gespiegelt
n = length(Signal); % Laenge des Signals
FFT_Signal = fft(Signal,n)/n; % Fast Fourier Transformation
f=(0:floor(n/2))/(n*dt); %Frequenzachse bis zur Grenzfrequenz
plot(f,FFT_Signal(1:length(f)));



Allerdings liefert mir der Plot am Ende keinen plausiblen Frequenzverlauf.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

ich kann ja nun mangels Daten kein Bild sehen. Du müsstest also schon genauer sagen: was bekommst du, was erwartest du stattdessen?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.