Хотя ответ мудреца, приведенный выше, сработает, это не совсем правильное или неэффективное использование клеточных массивов Matlab. Вы можете исключить многие посторонние вызовы функций, используя правильную индексацию содержимого массива ячеек. Вы можете обращаться к любому элементу массива ячеек двумя способами - ()
или {}
. ()
получает клетку, все еще как клетку. {}
однако, вытаскивает содержимое ячейки в ее базовом типе.
То есть sensors(1, end)
- это массив ячеек 1x1, но sensors{1, end}
- это строка символов 1x29.
Для вашей проблемы:
numRows = size(sensors, 1);
for rowIdx = 1:numRows;
sensorName = sensors{rowIdx, end};
sql = ['select * from data where ID = ' num2str(sensors{rowIdx, 1})];
...
end
Вы также можете исключить вызов num2str()
, если вы выбрали идентификатор датчика в виде символа, а не числа, т. Е. Если исходная выборка из базы данных, заполненная датчиками, была приведена.
Кроме того, если бы вы больше не обращались к БД, вы могли бы векторизовать все это, но я боюсь, что я далеко от своей машины Matlab, поэтому я не могу собрать ее с вершины моя голова.