如何从几个3D矩阵中创建单元格值向量


0

我目前正在尝试用matlab做一件事。情况很简单:我有大约70个相同大小的三维矩阵(192 x 192 x 30)。我需要获得的是从这些矩阵的相同索引的值创建的向量。为您提供一个简单的示例(使用2D矩阵)会更容易:

所需解决方案的简单示例

对于70个3D矩阵(大小:192x192x30)的情况,输出将是具有70列和192x192x30行的矩阵。我想知道最简单的解决方案,只使用矩阵,而不是循环。70个矩阵的最终解决方案看起来像:

期望的输出

感谢您提供任何帮助。我知道matlab中的解决方案可能非常简单,但我发现它时遇到了问题。

问候!


使用循环的解决方案很容易实现,但是有这么多单元,即使对于两个数组,也需要花费大量的时间来运行(例如下面的两个数组)。 function output = createMatrixFromFrames(x,y) xIndex = 192; yIndex = 192; zIndex = 30; output = [0 0]; for xParam = 1:xIndex disp(xParam); for yParam = 1:yIndex for zParam = 1:zIndex output = [output; x(xParam,yParam,zParam) y(xParam,yParam,zParam)]; end end end
PiotrKopczyński

Answers:


0

好吧,我自己找到了解决方案。略有不同,但为了我的目的,它甚至更好,使一些事情更简单。我只需要非负值。因此,首先我创建一个非零的逻辑单元格。

function output = createMatrixFromFrames(inputFrames, roiFrame)
numberOfFrames = length(inputFrames);
logicalRoiArray = roiFrame~=0;
output = inputFrames(1).img(logicalRoiArray)
for frameIndex = 2:numberOfFrames
    output = [output inputFrames(frameIndex).img(logicalRoiArray)];
end
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.