如何清空细胞

时间:2019-08-02 08:23:29

标签: matlab

我有一个包含很多NaN的单元格数组。但是无论出于什么原因,isnan函数都无法检测到它们(因此cellfun(@(Iarray) any(isnan(Iarray)),Iarray);不起作用),所以我认为实际上是包含NaN的字符串。

我在此数组上执行两件事:清理空的行和列,并删除NaN(尝试这样做)。

因此,我想用空单元格替换所有NaN,然后​​使用isempty函数执行清理所有空单元格的操作。我将使用循环和if char(x(i,j))=='NaN'

所以我的问题来了,我想清空一个单元格,然后使用isempty函数检测该单元格,但是我不知道如何操作。我已经尝试过x(1,2)= []x(1,2)= {[]}x(1,2)='',但是没有一个给出1的{​​{1}}。

有人知道如何解决我的问题吗? 预先感谢!

1 个答案:

答案 0 :(得分:2)

如果要清空单元格的内容,可以使用:

x{1,2} = [];

使用括号()和括号{}进行索引编制是有区别的。您可以将一个单元格数组视为一个单元格数组,每个单元格包含一个诸如1 ,2 , []之类的值。当用括号将一个单元格索引时,它以单元格(或更准确地说是一个类型为单元格的数组)返回结果,但是当用括号索引时,它返回该单元格的 content (或更精确地为comma separated list,其中包含已索引单元格的内容)。因此,当您编写这样的表达式时:

x(1,2) = [];

它从单元格数组中删除第二个元素,其行为类似于索引其他数组类型。例如,当您要删除a = [1 2 3]的第二个元素时,可以使用a(2)=[]

但是,当您编写x{1,2} = [];时,它会访问单元格的 content 并将其设置为类型为double的空数组[0 x 0]

同样,a={}是一个[0 x 0]个单元格的空数组,而b={[]}是一个[1 x 1]个单元格的数组,其第一个元素包含一个空数组[0 x 0]键入double。当您使用isempty(b)时,它返回false,因为它包含一个元素;当您使用isempty(b(1))时,它返回false,因为b(1)返回了一个包含元素,但是当您使用isempty(b{1})时,它会返回true,因为{}运算符提取的第一个单元格为空数组的内容。

简而言之,可以使用(){}来访问单元,并且根据情况[]具有不同的功能:a)删除元素b)空数组。

相关问题