2016-03-18 4 views
3

Ich mag eine Excel-Datei mit 10 Blatt mit Matlab mit der xlsread Funktion wie folgt lesen:Matlab - Warum kann xslread manchmal keine Zahl als Blattargument verwenden?

SPLByFrequency = zeros(173, 10); 
for i = 1:10 
    rawData = xlsread('mediciones', i); 
    SPLByFrequency(:, i) = rawData(84:256, 3); 
end 

Es ist nicht das erste Mal, dass ich Blätter lesen Excel eine Zahl als Argument und ich hatte nie ein Problem aber dieses Mal ist es nicht lassen sie mich es nicht tun, und ich diesen Fehler:

Error using xlsread (line 207) 
In basic mode, sheet argument must be a string. 

Error in TareaB53 (line 11) 
    rawData = xlsread('mediciones', i); 

ich habe nicht in der Lage gewesen, diese ‚Basis‘ Modus zu wechseln und dabei einige Debuggen ich gefunden habe, dass, seltsam genug, xlsread ('mediciones', 1) funktioniert, funktioniert aber mit keiner anderen Nummer.

Ich habe gefunden, dass es eine Möglichkeit gibt, diesem Problem zu entkommen, indem ich xlsinfo verwende, um die Blattnamen zu erhalten und dann die Blattfolgen als Argument zu verwenden, aber ich verstehe nicht, warum ich es nicht tun konnte einfach direkt mit einer Nummer, warum kann ich es nur mit der Nummer 1 machen oder warum es plötzlich nicht funktioniert, während ich es immer mit einer Nummer als Argument gemacht habe.

Gibt es eine Möglichkeit, dies zu lösen und direkt eine Zahl als Blattargument zu verwenden?

Bearbeiten - Zusammenfassung und neue Informationen

Wenn Sie nicht Excel für Windows installiert haben, xlsread im Basismodus arbeitet, so dass Sie keine Nummer für das Blatt Argument verwenden können.

Daher, für Portabilität, wäre es besser, xlsinfo zu verwenden, um die Blattfolgen zu erhalten.

Aus irgendeinem Grund, auch wenn es scheint, dass es nicht (für mich) funktioniert es auf OS X 10.9. Unter OS X 10.11 funktioniert es jedoch nicht mehr (ich habe Matlab Release 2012a).

+0

Aus dem Matlab doc: 'Basic-Modus ist die Standardeinstellung für Computer ohne Excel für Windows.'. Normalerweise ist 'basic' ein Flag _off_, das Sie aktivieren können. Wenn jedoch Excel (Windows) ** nicht auf Ihrem Computer installiert ist, wird das Flag trotzdem aktiviert und Sie müssen die Blattnummer als String angeben. Ich weiß nicht, ob die Tatsache, dass der Index "1" funktioniert, ein Fehler oder einfach "xlsread" ist, der die Eingabe ungültig macht und einen Standardwert verwendet (das erste Blatt), aber Ihr Programm wird robuster (und portabler) sein sich bemühen, die Blattnamen zu lesen und sie als Zeichenfolge zu bezeichnen. – Hoki

+0

@Hoki Ich benutze tatsächlich einen Mac und ich habe Excel installiert (sollte ich den Beitrag bearbeiten, um diese Informationen hinzuzufügen? Ich bin ein Neuling hier). Sie wissen, wie Sie die Flagge abstellen können? Ich habe es nicht gefunden. Ich habe '' '' für das Modusargument versucht, aber es funktioniert nicht für mich. – Llermy

Antwort

1

Wie in den Kommentaren empfohlen, benötigen Sie Excel für Windows, sonst sind Sie im Basismodus. Hier ist der relevante Auszug aus der Dokumentation:

num = xlsread(filename) reads data from the first worksheet in the Microsoft® Excel® spreadsheet file named filename and returns the numeric data in array num .

On Windows® systems with Microsoft Excel software, xlsread reads any file format recognized by your version of Excel.

If your system does not have Excel for Windows, xlsread operates in basic import mode, and reads only XLS, XLSX, XLSM, XLTX, and XLTM files.

Ich vermute, dass es vorher gearbeitet, weil Sie es auf einem Windows-PC verwendet wird, nicht ein Mac.

+0

Okay danke für die Info. Allerdings habe ich es vorher auf dem selben Mac benutzt, wo es funktioniert hat. Wie auch immer, ich habe gerade gemerkt, dass ich das letzte Mal, als ich es ausprobiert habe und gearbeitet habe, eine ältere Version des Betriebssystems hatte, so dass dies möglicherweise der Grund dafür ist, dass es nicht wie vorher bleibt ... – Llermy

Verwandte Themen