matlabfor取数组,for循环中的MATLAB和单元格数组处理
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 =
<(SQLcommand); ...... end 我尝试了⼏种不同的尝试,但从未成功获取其中⼀种要素。
感谢您的帮助:),在此先感谢。轴突
回答:
尽管上述贤哲的答案是可⾏的,但这不是正确的⽅法,也不是有效使⽤Matlab的细胞阵列的⽅法。通过使⽤正确的单元格数组内容索引,可以消除许多⽆关的函数调⽤。您可以通过()或{}两种⽅式寻址单元格数组的任何元素。 ()获取单元格,仍然作为单元格。 {}但是,以基本类型提取单元格的内容。
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机器上了,所以我⽆法从头开始构建⼀个。
更多&回答...

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。