Matlab矢量扩展

时间:2013-11-05 12:15:32

标签: matlab vector transform projection expansion

我有一个单向矢量,需要“取消投影”(对不起,我不知道怎么告诉它)它到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空间中具有这种动作的功能,并且(如果我很幸运的话)对于感兴趣的轴的任意角度。 谢谢。

3 个答案:

答案 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应该非常简单。