我是 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
我尝试了几种不同的尝试,但从未成功地只获得其中一种元素。
感谢帮助:),提前致谢。
轴突
虽然 Sage 的上述答案可行,但它并不是真正正确或有效地使用 Matlab 的单元阵列。您可以通过使用正确的元胞数组内容索引来消除许多无关的函数调用。您可以通过两种方式寻址元胞数组的任何元素 -()
or {}
. ()
得到细胞,仍然是一个细胞。{}
然而,以它的基本类型提取单元格的内容。
So 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()
如果您将传感器 ID 作为字符而不是数字获取,即如果您的原始数据库获取填充的传感器进行了转换,则调用。
此外,如果您没有进一步从数据库查询,您可以对整个事情进行矢量化,但恐怕我远离我的 Matlab 机器,所以我无法凭空构建这个机器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)