【发布时间】:2019-03-28 13:25:57
【问题描述】:
我有一个 10x10x40 的矩阵,它通过时间存储图像的信息,其中行和列表示特定点的光谱值,第三维是时间。换句话说,40 个时间点的 10x10 图像。我想遍历每一行、每一列并查看像素历史记录 (1,1,:), (1,2,:)....(10,10,:)。
这是我现在正在做的事情:
val = [];
for i = 1:10;
for j = 1:10;
for k = 1:length(timevector)
val(k) = my_matrix(i,j,k);
end
end
end
由于我想及时遍历每个像素然后保存该数据,存储新值/时间向量的最佳方法是什么?我想以 100 个像素历史向量结束,现在我以一个结束,这是因为 val 在循环中被写入。我知道不建议在循环中创建变量,那么最好的选择是什么?我应该考虑将输出存储为结构吗?我一直盯着这个,我把一切都复杂化了。
【问题讨论】:
-
目前还不清楚您的预期输出是什么。你想要一个 100 元素的向量输出吗? 10x10 2D“层”应该如何对应一维数组?您是否希望最终得到 100 个向量,每个 1x40 大小的向量仍然包含所有时间数据?这与您的原始矩阵有何不同?
-
我最终要过滤每个向量,我可以在循环中创建过滤矩阵 - 我只是不知道如何制作/执行循环
-
您还可以根据过滤器功能以矢量化形式进行过滤。例如。
filtfilt沿第一个维度进行操作,具有多个元素,因此通过对矩阵进行置换、过滤和反置换,与循环相比,您将获得巨大的性能提升。 -
这听起来像X-Y problem。陈述你想要达到的目标,而不仅仅是如何解决问题的一小部分。最好的输出格式取决于你想要做什么,正如@rinkert 所说,你可能根本不需要这一步
-
请添加一个最小示例和所需的输出。
标签: matlab