当Y是单元格数组时,通常会遇到此错误.对于细胞阵列,
Y{1}(1:3)
是合法的.大括号({})表示数据提取,因此这意味着您要提取存储在单元格数组中位置1的数组,然后引用该数组的元素1到3.
符号
Y(1)(1:3)
不同之处在于它不提取数据,但它引用了单元格的位置1.这意味着第一部分(Y(1))返回一个单元格数组,在您的情况下,它包含一个数组.因此,您不会像以前那样直接访问常规数组.
在Matlab中一个臭名昭着的限制是你不能进行间接或双重引用,这实际上就是你在这里所做的.
因此错误.
现在,要解决:我怀疑用卷曲的替换一些正常的大括号会做到这一点:
Y{PartNo} = CD1(1+20*(PartNo-1):20*PartNo,:); % extract data
Z{PartNo} = Y{PartNo}(3:end)-Y{PartNo}(1:end-2); % find the second difference
MEAN_ABS_2ND_DIFF_RESULT{PartNo} = mean(abs(Z{PartNo})); % mean of absolute value