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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren