我有一个单向矢量,需要“取消投影”(对不起,我不知道怎么告诉它)它到3D空间。如果有内置函数来避免循环?
澄清的2D示例。我有
[1 2 3;
4 5 6;
7 8 9]
它已被预测到第一个维度。得到:
[6;
15;
24]
现在我需要“取消项目”并得到:
[2 2 2;
5 5 5;
8 8 8]
然后我会以一组角度重复它。
这就像Radon变换但是在3D中。因此,我们在3D空间中具有这种动作的功能,并且(如果我很幸运的话)对于感兴趣的轴的任意角度。 谢谢。
答案 0 :(得分:2)
这是一种在3D中为此向量执行此操作的简便方法:
v = [6;15;24];
repmat(v, [1 3 3])/9
一种通用解决方案,可以使用requiredDimensions
v = [6;15;24];
requiredDimensions = 3;
n = numel(v);
myDims = [1 repmat(n,1,requiredDimensions - 1)];
repmat(v, myDims )/prod(myDims)
答案 1 :(得分:1)
有几种方法可以做到这一点
让v
成为“投影向量”(示例中为v = [6;15;24;]
),d
为所需的列数(示例中为d = 3
),然后:
>> v * ones( 1, d ) / d
可选地
>> repmat( v/d, [1 d] )
答案 2 :(得分:1)
在2D中:
B = sum(A')';
C = diag(B)*(ones(size(A))/size(A,2));
C =
2 2 2
5 5 5
8 8 8
适应3D应该非常简单。