matlab for 取数组,for循环中的MATLAB和单元格数组处理
for循環(huán)中的MATLAB和單元格數(shù)組處理
我是MATLAB新手,想從數(shù)據(jù)庫中提取一個單元格數(shù)組中的數(shù)據(jù):
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' 現(xiàn)在,我想抓住第一列,即數(shù)字1至19以及最后一列中的相應名稱,并在for循環(huán)中使用它們,例如:
for ID=xxxx str = num2str(ID); SQLcommand = strcat('SELECT FROM data where ID=',str); answer = database.exec(SQLcommand); ...... end 我嘗試了幾種不同的嘗試,但從未成功獲取其中一種要素。
感謝您的幫助:),在此先感謝。軸突
回答:
盡管上述賢哲的答案是可行的,但這不是正確的方法,也不是有效使用Matlab的細胞陣列的方法。通過使用正確的單元格數(shù)組內容索引,可以消除許多無關的函數(shù)調用。您可以通過()或{}兩種方式尋址單元格數(shù)組的任何元素。 ()獲取單元格,仍然作為單元格。 {}但是,以基本類型提取單元格的內容。
因此, sensors(1, end)是一個1x1的單元格數(shù)組,但是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而不是數(shù)字,也可以消除num2str()調用-即,如果您的原始DB提取操作是填充傳感器的,則進行了強制轉換。
另外,如果您不打算從數(shù)據(jù)庫中進一步查詢,則可以對整個過程進行矢量化處理,但是恐怕我不在我的Matlab機器上了,所以我無法從頭開始構建一個。
更多&回答...
總結
以上是生活随笔為你收集整理的matlab for 取数组,for循环中的MATLAB和单元格数组处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《燕云十六声》尘封嫁衣博物获得方法-燕云
- 下一篇: 地下城与领主日常搬砖玩法攻略