2

W我有一个大小为 3 维的矩阵,160x170x18我想计算 W 内每个连续矩阵之间的差异。

例如diff1 = W(:,:,1) - W(:,:,2)diff2 = W(:,:,2) - W(:,:,3)等...

接下来我要选择结果矩阵的一些特殊部分,例如:

NewDiff1 = [diff1(20:50,110:140); diff1(60:90,110:140)];

其他矩阵也一样。最后我想计算每个矩阵的平均值和误差如下:

mean1 = mean(mean(NewDiff1));
er1 = 0.1-abs(mean1);

我成功地为每个矩阵单独执行此操作,但更喜欢在 for 循环中一次完成所有操作。

4

2 回答 2

4

表达方式

diff1 = diff(W,1,3)

在您的示例中,将返回一个160*170*17矩阵 where diffW(:,:,1) = W(:,:,2) - W(:,:,1),这不是您想要的。但

diff1 = (-1)*diff(W,1,3)

确实,如果我的算术很好,给你你想要的差异。从那里开始,您需要类似的东西:

newdiff1 = [diff1(20:50,110:140,:);diff1(60:90,110:140,:)];

means = mean(mean(newdiff1));
er1 = 0.1 - abs(mean1);

我还没有在你正在使用的大小的矩阵上彻底测试这个,但它似乎在较小的测试上工作正常。

于 2012-10-09T12:54:39.690 回答
1

将您的矩阵存储到一个元胞数组中,然后循环遍历元胞数组的内容并将相同的差分逻辑应用于每个事物。小心使用{}单元格数组的语法来获取其内容,而不是()在特定位置为您提供单元格。

于 2012-10-09T12:39:39.903 回答