gpt4 book ai didi

matlab - 索引必须出现在索引表达式的最后

转载 作者:太空宇宙 更新时间:2023-11-03 19:38:11 24 4
gpt4 key购买 nike

我有一个向量 CD1(120×1),我将 CD1 分成 6 个部分。例如,第一部分是从 CD1 中的第 1 行到第 20 行提取的,第二部分是从 CD1 中的第 21 行到第 40 行中提取的,等等。对于每个部分,我需要计算均值second differences of the data 的绝对值.

for PartNo = 1:6   

% extract data
Y(PartNo) = CD1(1 + 20*(PartNo-1):20*(PartNo),:);

% find the second difference
Z(PartNo) = Y(PartNo)(3:end) - Y(PartNo)(1:end-2);

% mean of absolute value
MEAN_ABS_2ND_DIFF_RESULT(PartNo) = mean(abs(Z));

end

但是,上面的命令会产生错误:

()-indexing must appear last in an index expression for Line:2

有什么想法可以更改代码以使其执行我想要的操作吗?

最佳答案

Y 是元胞数组时,经常会遇到此错误。对于元胞数组,

Y{1}(1:3) 

是合法的。花括号 ({}) 表示数据提取,所以这意味着您正在提取存储在元胞数组中位置 1 的数组,然后引用该数组的元素 1 到 3。

符号

Y(1)(1:3)

的不同之处在于它不提取数据,但它引用 单元格的位置 1。这意味着第一部分 (Y(1)) 返回一个 cell-array,在您的例子中,它包含一个数组。所以您将无法像以前那样直接访问常规数组。

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

关于matlab - 索引必须出现在索引表达式的最后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13628015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com