如何从索引i访问单元格数组到最后

时间:2015-09-24 04:21:45

标签: matlab matrix cell cell-array

[~,~,rawdata] = xlsread('somefile');

rawdata是1311 x 14个单元格的单元格数组。我想从指定列的第二行访问最后一行。

rawdata{2:,ith col}类似,但却出错。

我想解决的最终目的是找到从异构格式excel导入的2-D单元格数组的每一列的NaN计数。

2 个答案:

答案 0 :(得分:1)

rawdata(2:end,ith_col)应该有效,正如评论中所讨论的那样。

使用end来引用矩阵或数组中的最后一个字符。

使用()来引用数组或矩阵中的元素块。由于矩阵的一个元素在概念上是一个1x1矩阵,myMatrix(1,3)得到第一行中的第三个元素。

使用{}从数组中提取单个元素。例如:

myCell = {'test','hello_world',56,[1;2;3]};
disp(myCell(1))
disp(myCell{1})

首先打印1x1单元格{'test'}(在命令窗口中显示'test')然后打印字符串'test'(显示test

答案 1 :(得分:0)

要获得每列中NaN >的单元数,可以使用

result = sum(cellfun(@(n) isequalwithequalnans(n,NaN), rawdata), 1);

例如,

rawdata = { 'aa', NaN;
            2,    NaN;
            NaN,    3 };

产生

result =
     1     2

如果您的所有单元格包含NaN或数字(因此没有字符串等),您可以使用更简单的

result = sum(cellfun(@isnan, rawdata), 1);

例如,

rawdata = { 1,   NaN,   3;
            2,   NaN, NaN;
            NaN,   7,   4 };

给出

result =
     1     2     1