Я пишу программу, которая будет использовать readtable
для управления данными, считываемыми из электронной таблицы Excel, например, приведенной ниже:
A B C D E F...
1 " " " " " "
2 " S 3 K3 " "
3 " " " " " "
4 " " 10 3C " "
5 " G 7 U " "
6 " " " " " "
.
.
.
Я должен извлечь исходное местоположение некоторых данных То есть мне нужно хранить местоположение 'S'
как 'B2'
и 'K3'
как 'D2'
et c. после того, как они прочитаны из электронной таблицы. Для этого я использую readtable
и затем ищу место в электронной таблице, которая содержит желаемую строку; однако для этого требуется, чтобы вся таблица была загружена в MATLAB.
Я не знаю заранее количество пустых строк или столбцов до 'S'
, а также не знаю, будут ли заполнены какие-либо данные в каком-либо столбцов в строках над ним. Кроме того, я не хочу, чтобы имена переменных генерировались автоматически.
readtable('FilePath', 'ReadVariableNames', false, 'Range', 'myrange')
позволяет не читать имена переменных, но не допускает динамический диапазон c, т. Е. Опция по умолчанию пропускает пустое пространство, а указанный диапазон может ' t быть динамическим c.
opts=detectImportOptions('FilePath');
opts.DataRange='A1'
readtable('FilePath', opts, 'ReadVariableNames', false)
позволяет указать начало диапазона, но opts=detectImportOptions
перезаписывает параметр 'ReadVariableNames'
, и программа все равно считывает имена переменных. Единственный обходной путь, который я нашел, состоял в том, чтобы использовать readtable
без opts
и указать диапазон, больший, чем самый большой ожидаемый набор данных, а затем обрезать пустые строки и столбцы, но это медленно и неуклюже. Есть ли обходной путь?