首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab矢量展开

Matlab矢量展开
EN

Stack Overflow用户
提问于 2013-11-05 12:15:32
回答 3查看 75关注 0票数 1

我有一个一维向量,需要“取消项目”(对不起,我不知道如何告诉它)它的3D空间。如果有一个内置函数来避免循环?

一个2D的例子来澄清。我有

代码语言:javascript
复制
[1 2 3;
 4 5 6;
 7 8 9]

它已经被投射到第一个维度。得到:

代码语言:javascript
复制
[6;
15;
24]

现在我需要“去设计”它并得到:

代码语言:javascript
复制
[2 2 2;
 5 5 5;
 8 8 8] 

然后,我将重复一组角度。

这就像一个Radon变换,但在3D中。那么,在3D空间中,如果我幸运的话,对于兴趣轴的任意角度,我们有这样的作用吗?谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-05 12:38:47

这里有一种简单的方法,可以在3D中实现这个矢量:

代码语言:javascript
复制
v = [6;15;24];

repmat(v, [1 3 3])/9

一种广义的解决方案,它将用requiredDimensions将任何向量解构成形状。

代码语言:javascript
复制
v = [6;15;24];
requiredDimensions = 3;

n = numel(v);
myDims = [1 repmat(n,1,requiredDimensions - 1)];
repmat(v, myDims )/prod(myDims)
票数 2
EN

Stack Overflow用户

发布于 2013-11-05 12:24:44

做这件事有几种方法。

v设为“投影向量”(示例中为v = [6;15;24;] ),d为所需列数(示例中为d = 3 ),那么:

代码语言:javascript
复制
>> v * ones( 1, d ) / d

另一个选择

代码语言:javascript
复制
>> repmat( v/d, [1 d] )
票数 1
EN

Stack Overflow用户

发布于 2013-11-05 12:26:14

在2D中:

代码语言:javascript
复制
B = sum(A')';

C = diag(B)*(ones(size(A))/size(A,2));

C =    
   2   2   2
   5   5   5
   8   8   8

它应该是非常直接的,以适应3D。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19788775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档