如何计算4D图像数据的均值和最大值?



我有一些4D图像数据,384 × 276 × 20 × 5,其中data(X,Y,T,V), X = x location, Y = y location, T = time, V = vessel location .

我希望数据随时间的平均值和最大值,以获得信号的模式,从而设置阈值的值。我在循环中执行,这样我就可以得到,例如data(1,1,:,1),该点随时间的平均值。

我尝试了mean(data(X,Y,:,V))mean(squeeze(data(X,Y,:,V))),但它给了我错误"下标索引必须是真实的正整数或逻辑。"

我到处搜索,但平均值的例子只适用于2D和1D。我估计,如果我想获得数据随时间的平均值/最大值,数据是data(X,Y,:,V),现在是3D数据。

关于如何做到这一点有什么帮助或想法吗?

您可以通过将其作为第二个参数传递给mean函数来指定取平均值的维度。然后,您可以使用SQUEEZE函数删除单维,以获得三维矩阵:

meanData = squeeze(mean(data,3));

使用MAX函数查找最大值可以遵循相同的过程,尽管在指定要操作的维度之前必须添加一个空参数[]:

maxData = squeeze(max(data,[],3));

要分析您的问题,请从错误消息开始:"下标索引必须是实正整数或逻辑整数。"你明白这是什么意思吗?如果没有,是否包含您不确定其含义的单词?你能在文档中详细了解它们吗?你能谷歌一下整个错误信息吗?

这背后的原因是您需要了解MATLAB如何访问384 × 276 × 20 × 5数组的元素;你的问题与取均值或最大值无关,因此搜索这些术语没有帮助。

当你输入

data(X,Y,T,V)

则X,Y,T,V必须是整数(或整数的向量),即X必须在1:384的范围内,以此类推。例如,

mean(data(1,1,:,1))

将给出第一个X、Y和V点的时间平均值。

也就是说,你说你使用循环…看一下

mean(data,3)

max(data,[],3)

做……如果我正确理解了你的问题,这应该完全取代你的循环。

mean(data,3)max(data,[],3)

相关内容

  • 没有找到相关文章