合并两个数据集

时间:2014-06-27 12:58:46

标签: matlab merge

我的问题与在场上合并两个不同间距的矩阵有关 两个矩阵都在(频率空间域(F-X))并且为了说明我们考虑: Matrix One(A x B) 矩阵二(A x C) 其中(A = 1500)是频率样本(它们都共享相同的频率样本数)。       (B = 168)是第一个数据集(现场记录站)的接收器数量,B(1)和B(2)之间的间隔为12米,B(2)和B(3)之间的距离为12米等等       (C = 196)也是第二个数据集(现场记录站)的接收器数量,其间隔不同于B.所以C(1)到C(2)是48,C(2)到C(3) )是48等等。

Matrix One中接收器线的总长度为(168 * 12)= 2016 m。 矩阵二中接收器线的总长度为(196 * 48)= 9408 m。

矩阵(一)的线位于第二行的中间部分。 这意味着他们在两个都存在的地方做了一圈。(来自较短线的每个第四接收器与来自较长线的接收器重叠) 我想合并它们(将它们加在一起),其中最终结果表示在它们重叠的位置添加到矩阵A的courser间距(矩阵2)。

我希望我能以某种方式做到这一点

2 个答案:

答案 0 :(得分:0)

如果AB是您的2个矩阵,则merged将是合并矩阵。我使用了大小为196x100和168x100的矩阵,因为我懒得使用1500;)。 C,D是整数,范围从1到第一维的大小。

A= randi(100, 168 ,100)+20;
B= randi(10, 196, 100);

C= 1:168;  %ranging from 1 to number of receiver in Matrix 1(A)
D= 1:196;  %ranging from 1 to number of receiver in Matrix 2(B)
C= C*12+4704; %Distance of each receiver to 0 and shifted to the middle of 2nd matrix
D= D*48;      %Distance of each receiver to 0

A= [C', A];  %adding distance as first column to Matrix 1
B= [D', B];  %adding distance as first column to Matrix 2

C= [A;B];  %adding the 2 matrices
C=sortrows(C,1);  %sorting the new matrix 
merged = C(:,2:end); %deleting first column (distance)

我正在做的是生成距离(C,D),将它们附加在第1列中,逐行附加两个矩阵并按行距离排序(新列1)。然后在最后我删除了距离,因为你没有要求它。
刚刚意识到你的矩阵不是168x1500而是1500x168,只需转换它,使用(A=A';

答案 1 :(得分:0)

如果我正确理解您的问题,您希望将矩阵1的每个第4个值(我将此A称为)添加到矩阵2中(我将称之为{ {1}})在2中间的某个定义位置。因此,我们需要选择B的每个第4个值,并在重叠B的某个点将其添加到A。< / p>

以下是如何沿第二维选择p的每个第4个值:

B

由于矩阵coarseB = B(:, 4:4:end); A的大小不同,我们必须使用零扩展B的大小,以便将其添加到A。这将有助于了解第二维B的大小:

coarseB

这将在sizeB = size(B, 2); coarseB = [zeros(1500, p - 1) coarseB zeros(1500, 168 - (p - 1) - sizeB)]; 的末尾和开头连接一个零数组,将其扩展为coarseB(1500 x 168)的大小。

现在A可以添加到coarseB

A

希望这有帮助!