Excel-Datei in Matlab

Gast #859488
Lesenswert?
• ▲
▼
Hallo,

ich habe ein Problem.
Ich habe Daten in Excel kreiert. Nun will ich die Datei auslesen und das 
Ergebnis plotten.

Ich habe nun folgenden Code in Matlab geschrieben. Allerdings gibt 
Matlab eine Fehlermeldung, die ich nicht verstehe.
Vielleicht kann mir da einer weiterhelfen:

Mein Code:

[nums, txt] = xlsread('MeineExcelDatei.xls') %Einlesen der Datei

varNames = char(txt(1,:)); %Bestimmen der 
Spaltenüberschriften=Variablennamen

for col=1:size(varNames,1),
  if isnan(nums(1,col)) %erstes Datenwort nicht numerisch?
    assignin('base',varNames(col,:),char(txt(2:end,col))); %Zuweisen der 
Strings in der Spalte
  else %falls doch numerisch?
    assignin('base',varNames(col,:),nums(:,col)); %Zuweisen der Zahlen 
in der Spalte
  end;
end;

Excel-Datei-Auszug:
Amplitude  Fkt  Zeit  Frequenz
1           0     0      50
1           -0,79 1      50
1           -1,56 2      50

es ist eine Sinus-Funktion.

Er gibt folgenden Fehler aus:
??? Error using ==> assignin
Invalid variable name "Fkt    " in ASSIGNIN.

Error in ==> excel at 15
           assignin('base',varNames(col,:),nums(:,col));
Gast #859628
Lesenswert?
• ▲
▼
dann hast du eine struktur mit einer matrix der datenwerte und einen 
vektor mit den spaltenüberschriften.

plot(struktur.data(:,1)struktur.data(:,2)) oder so ähnlich.

die richige spalte kannst du mit strcmp finden.

z.B.

pommes=find(  strcmp(struktur.text,'Pommes')  )

vielleicht muss man das auch in einer for schleife machen.
Gast #884944
Lesenswert?
• ▲
▼
Hallo,

ich habe nun ein anderes Problem.
Ich habe mir wieder eine Excel-Datei erstellt. Diesmal mit gemessenen 
Werten, die ich in Excel importiert habe. Diese Daten will ich nun mit 
Matlab auswerten.
Excel-Datei-Name: matlabaufl  M-File-Name: Auflösung
Matlab gibt nun folgenden Fehler.

??? Auflösung
        |
Error: The input character is not valid in MATLAB statements or 
expressions.

Kann mir jemand sagen, was der Fehler bedeuted?
Wie ich den beheben kann.
Im Anhang findet ihr die Excel Tabelle.

Gruß Dieter
Angehängte Dateien:
Gast #884948
Lesenswert?
• ▲
▼
Und so sieht mein M-File aus. ;)

clc
clear all

[nums, txt] = xlsread('matlabaufl.xls') %Einlesen der Datei

varNames = char(txt(1,:)); %Bestimmen der 
Spaltenüberschriften=Variablennamen

for col=1:size(varNames,1)
  if isnan(nums(1,col)) %erstes Datenwort nicht numerisch?
    assignin('base',varNames(col,:),char(txt(2:end,col))); %Zuweisen der 
Strings in der Spalte
  %else %falls doch numerisch?
    %assignin('base',varNames(col,:),nums(:,col)); %Zuweisen der Zahlen 
in der Spalte
  end;
end;

a = nums(1,4)
x = nums(:,2);
t = nums(:,1);
b = nums(1,5)

l = length(x);
lt = length(t);
if (b ~= 1000)   % ungleich
    abtast = 19200;
else abtast = 19200;
end

z = fft(x,abtast);
Leistungsspektrum = abs(z)/abtast; %Leistungsdichtespektrum
xAchse = 1000.*(0:abtast-1)./abtast;
achse = floor(xAchse.*(b/1000));

figure(1)
plot(t,x)
ylim([-a-1,a+1])
title('Sinus')
xlabel('Zeit [s]')
ylabel('Amplitude')
grid on;

figure(2)
stem(achse,Leistungsspektrum(1:abtast));
ylim([0,a+1])
title('Spektrum')
xlabel('Frequenz [Hz]')
ylabel('Amplitude')
grid on;
Gast #885143
Lesenswert?
• ▲
▼
Nun aber doch noch ein Fehler bzw. eine Frage.

Ich kenne die Formel für die Auflösung, wenn ein Rechteckfenster 
verwendet wird. Sie lautet: Auflösung = Abtastfrequenz / Anzahl der 
Abtastwerte

Ich habe nun das oben genannte Programm und möchte gerne wissen, welche 
Auflösung mir Matlab gibt.
Jetzt habe ich zwei Versuche durchgeführt. Einmal eine Periodendauer von 
1s und einmal von 5s verwendet. Die Auflösung ist aber konstant bei 
0,2083Hz

Das  verstehe ich noch nicht ganz.
Kann mir da jemand helfen?

Bzw mir vielleicht sagen, wie ich ein Rechteckfenster über mein Signal 
legen kann.
Habe unter help gefunden: rectwin
Weiß aber jetzt nicht, wie ich das anwenden muss.

Danke

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.