arrays - for 循环中的 MATLAB 和元胞数组处理

标签 arrays matlab for-loop cell

我是 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 元胞数组。您可以通过使用适当的元胞数组内容索引来消除许多无关的函数调用。您可以通过两种方式寻址元胞数组的任何元素 - (){}() 获取单元格,仍然是一个单元格。但是,{} 以其基本类型提取单元格的内容。

所以 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

如果您将传感器 ID 获取为字符而不是数字,您也可以消除 num2str() 调用 - 即,如果您的原始数据库获取填充的传感器进行了转换。

此外,如果您不从数据库进一步查询,则可以对整个内容进行矢量化,但恐怕我不在我的 Matlab 机器旁,所以我无法在我的头。

关于arrays - for 循环中的 MATLAB 和元胞数组处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4635052/

相关文章:

c# - 如何在 C# 中对分隔字符串数组进行数字排序

java - 仅复制 3D 数组的前 2 个维度

javascript - 如果将 Array 对象添加到 Array 原型(prototype),则不遍历 Array 对象的函数

algorithm - 使用大半径/标准差对图像进行高斯模糊时的奇怪行为

java - 切换数字的简单程序

c++ - 有没有一个 C++ 版本在循环结束后保留​​在范围内的 for 循环初始化中声明的变量?

javascript - forEach 与 for 循环?? for 循环似乎有效,但不适用于 forEach。为什么?请问有人可以解释吗?

c++ - 如何创建 std::array 包装器类

matlab - MATLAB 中积分函数的奇怪行为

python - SymPy 秩与 NumPy 矩阵秩不同