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));
ich improtiere das immer mit uiimport. in der gui kann man dann auch angeben, dass ein Komma als Dezimaltrennzeichen verwendet wird. Ansonsten Exel auf jeden fall aut Punkt umstellen
In Excel habe ich die Komma durch Punkte ersetzt. Allerdings ist der Fehler nicht beseitigt worden :( Hat jemand einen anderen Tip? Danke Dieter
Bzw. wie kann ich dann die Daten plotten, wenn ich die mit uiimport importiere???
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.
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
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;
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
Sorry, nochmal was vergessen. Die 0,2083 ist die Schrittweite des Zeitsignals am Eingangssignal. Aber wie kann ich denn die Aulösung bestimmen? Wenn ich mit 4800 abtaste und 1s bzw 5s messe?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.