Matlab/Octave的相当于R中的'merge'(或'expand.grid')是什么?

9

我正在寻找Matlab实现以下操作的方法:

> merge(2:4,3:7)
   x y
1  2 3
2  3 3
3  4 3
4  2 4
5  3 4
6  4 4
7  2 5
8  3 5
9  4 5
10 2 6
11 3 6
12 4 6
13 2 7
14 3 7
15 4 7
> expand.grid(2:4,3:7)
   Var1 Var2
1     2    3
2     3    3
3     4    3
4     2    4
5     3    4
6     4    4
7     2    5
8     3    5
9     4    5
10    2    6
11    3    6
12    4    6
13    2    7
14    3    7
15    4    7

1
我刚刚发现了一种使用神经网络工具箱“combvec”的方法。但是它在Octave中不存在。 - gd047
我在http://www.math.umaine.edu/~hiebeler/comp/matlabR.html上没有找到有用的东西... 你可以尝试使用meshgrid来组合一些内容,参考链接:http://www.mathworks.com/help/techdoc/ref/meshgrid.html - Ben Bolker
看起来 merge 的等价物是 join(这并不太令人惊讶):http://www.mathworks.com/help/toolbox/stats/dataset.join.html -- 但这并不是你在上面使用 merge 的原因... - Ben Bolker
2个回答

15

我通常使用meshgrid来完成:

>> [x y] = meshgrid(2:4, 3:7);
>> [x(:) y(:)]

ans =

     2     3
     2     4
     2     5
     2     6
     2     7
     3     3
     3     4
     3     5
     3     6
     3     7
     4     3
     4     4
     4     5
     4     6
     4     7

这对于两个向量非常有效,但meshgrid不接受超过2个。 - Lionel Henry

4

使用ndgrid处理n个变量(2个或更多)。例如(4-D空间)

[X,Y,Z,T] = ndgrid(2:4, 3:7, 1:2, 1:10);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接