Matlab向量展开
我有一个1-D向量,需要将它“取消投影”(对不起,我不知道如何告诉它)到3D空间。是否有避免循环的内置函数 要澄清的2D示例。我有Matlab向量展开,matlab,vector,transform,projection,expansion,Matlab,Vector,Transform,Projection,Expansion,我有一个1-D向量,需要将它“取消投影”(对不起,我不知道如何告诉它)到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空间中的此类动作,以及(如果我幸运的话)感兴趣轴的任意角度。 谢谢。有几种
[1 2 3;
4 5 6;
7 8 9]
它被投射到第一维度。获得:
[6;
15;
24]
现在我需要对其进行“去项目化”并获得:
[2 2 2;
5 5 5;
8 8 8]
然后,我将对一组角度重复它
这类似于Radon变换,但在3D中。那么,我们是否有一个函数,用于3D空间中的此类动作,以及(如果我幸运的话)感兴趣轴的任意角度。
谢谢。有几种方法。
假设
v
是“投影向量”(v=[6;15;24;]
在您的示例中),并且d
是所需的列数(d=3
),然后:
或者
>> repmat( v/d, [1 d] )
有几种方法可以做到这一点。
假设
v
是“投影向量”(v=[6;15;24;]
在您的示例中),并且d
是所需的列数(d=3
),然后:
或者
>> repmat( v/d, [1 d] )
在2D中:
适应3D应该非常简单。在2D中:
B = sum(A')';
C = diag(B)*(ones(size(A))/size(A,2));
C =
2 2 2
5 5 5
8 8 8
适应3D应该非常简单。这里有一个简单的方法可以在3D中实现此向量:
v = [6;15;24];
repmat(v, [1 3 3])/9
一种通用的解决方案,它将使用您的
所需的尺寸
将任何向量取消投影到形状中:
v = [6;15;24];
requiredDimensions = 3;
n = numel(v);
myDims = [1 repmat(n,1,requiredDimensions - 1)];
repmat(v, myDims )/prod(myDims)
以下是一种在3D中为该向量执行此操作的简单方法:
v = [6;15;24];
repmat(v, [1 3 3])/9
一种通用的解决方案,它将使用您的
所需的尺寸
将任何向量取消投影到形状中:
v = [6;15;24];
requiredDimensions = 3;
n = numel(v);
myDims = [1 repmat(n,1,requiredDimensions - 1)];
repmat(v, myDims )/prod(myDims)
当前的
myDims
结构假设您希望所有内容都是“方形”,但不难根据您的需要进行调整。当前的myDims结构假设您希望所有内容都是“方形”,但不难根据您的需要进行调整。