两个矩阵之间的索引

时间:2017-07-07 07:56:22

标签: matlab indexing point

我有两个矩阵(V;顶点节点坐标x,y,z& T;三角形列表显示构成三角形的节点(1,2,3))

我想用相应顶点节点的坐标替换T中的值,即:

V
    1 --- 1.35234 1.2542445 1.32234324
    2 --- 3.42354 1.2521345 1.34325524
    3 --- 2.26434 1.2323345 1.33225324
T
1 2 3 

should go to 

T_V

1.35234 1.2542445 1.32234324 3.42354 1.2521345 1.34325524 2.26434 1.2323345 1.33225324

2 个答案:

答案 0 :(得分:1)

T始终是(1x3)数组,您可以尝试:

T_V=reshape(V(T(:),:)',1,numel(T)*size(V,2))

对于更一般的情况,如果T是一个矩阵,例如:

T=[1 2 3;4 5 6]

用于V矩阵,例如

V=[
1.35234 1.2542445 1.32234324
3.42354 1.2521345 1.34325524
2.26434 1.2323345 1.33225324
10 20 30
40 50 60
70 80 90]

你可以尝试:

T1=T'
V_T=reshape(V(T1(:),:)',1,numel(T1)*size(V,2))

修改

如果T_V矩阵的预期形状为(n_row of T x 9),您可以尝试(我在VT添加了一些行以用于测试目的):

V=[
1.35234 1.2542445 1.32234324
3.42354 1.2521345 1.34325524
2.26434 1.2323345 1.33225324
10 20 30
40 50 60
70 80 90]

T=[1 2 3
5 4 6]

T1=T'

T_V=reshape(reshape(V(T1(:),:)',1,numel(T1)*3),size(T,2)*size(V,2),size(T))'

生成的T_V矩阵:

T_V =

    1.3523    1.2542    1.3223    3.4235    1.2521    1.3433    2.2643    1.2323    1.3323
   40.0000   50.0000   60.0000   10.0000   20.0000   30.0000   70.0000   80.0000   90.0000

注意:使用Octave进行测试

答案 1 :(得分:0)

我不知道你的意思是否是基本的,但是

V = [1.35234 1.2542445 1.32234324;
      3.42354 1.2521345 1.34325524;
      2.26434 1.2323345 1.33225324];
T = [1 2 3]
Tv = [V(T(1),:),V(T(1),:),V(T(3),:)];