概述
for循环中的MATLAB和单元格数组处理
我是MATLAB新手,想从数据库中提取一个单元格数组中的数据:
sensors = [ 1] [23] [1] [ 0] [0.1000] [1x29 char] [ 2] [23] [1] [120] [0.1000] [1x43 char] [ 3] [23] [1] [120] [0.1000] [1x42 char] [ 4] [23] [1] [ 15] [0.1000] 'Air Temp Grey Box' [ 5] [23] [1] [120] [0.1000] [1x34 char] [ 6] [23] [1] [120] [0.1000] [1x33 char] [ 7] [23] [1] [120] [0.1000] 'Pool Water Temp' [ 8] [23] [2] [ 0] [0.1000] [1x28 char] [ 9] [23] [1] [ 30] [0.1000] [1x22 char] [10] [23] [1] [ 30] [0.1000] [1x22 char] [11] [23] [1] [ 30] [0.1000] [1x21 char] [12] [23] [1] [ 15] [0.1000] [1x20 char] [13] [23] [1] [ 15] [0.1000] [1x23 char] [14] [23] [1] [ 30] [0.1000] [1x22 char] [15] [23] [1] [ 15] [0.1000] 'Ground Air ' [16] [23] [1] [ 5] [0.1000] 'Boiler Cold Water' [17] [23] [1] [ 5] [0.1000] 'Boiler Hot Water' [18] [23] [1] [ 5] [0.1000] 'Boiler CH Flow' [19] [23] [1] [ 5] [0.1000] 'Boiler CH Return' 现在,我想抓住第一列,即数字1至19以及最后一列中的相应名称,并在for循环中使用它们,例如:
for ID=xxxx str = num2str(ID); SQLcommand = strcat('SELECT FROM data where ID=',str); answer = database.exec(SQLcommand); ...... end 我尝试了几种不同的尝试,但从未成功获取其中一种要素。
感谢您的帮助:),在此先感谢。轴突
回答:
尽管上述贤哲的答案是可行的,但这不是正确的方法,也不是有效使用Matlab的细胞阵列的方法。通过使用正确的单元格数组内容索引,可以消除许多无关的函数调用。您可以通过()或{}两种方式寻址单元格数组的任何元素。 ()获取单元格,仍然作为单元格。 {}但是,以基本类型提取单元格的内容。
因此, sensors(1, end)是一个1x1的单元格数组,但是sensors{1, end}是一个1x29的char字符串。
对于您的问题:
numRows = size(sensors, 1); for rowIdx = 1:numRows; sensorName = sensors{rowIdx, end}; sql = ['select * from data where ID = ' num2str(sensors{rowIdx, 1})]; ... end 如果您将传感器ID提取为char而不是数字,也可以消除num2str()调用-即,如果您的原始DB提取操作是填充传感器的,则进行了强制转换。
另外,如果您不打算从数据库中进一步查询,则可以对整个过程进行矢量化处理,但是恐怕我不在我的Matlab机器上了,所以我无法从头开始构建一个。
更多&回答...
最后
以上就是曾经鸭子为你收集整理的matlab for 取数组,for循环中的MATLAB和单元格数组处理的全部内容,希望文章能够帮你解决matlab for 取数组,for循环中的MATLAB和单元格数组处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复