根据列表中的元素扩展矩阵

Expanding a matrix according to elements in lists

我目前创建了一个接受两个参数的函数。

function p = matr(x, phi)
     x_dir = linspace(0, x, 1);
     r = linspace(0, phi, 1);
     p = zeros(800, 2);
     p(1:400, 1) = p(1:400, 1) + x_dir.';
     p(401:800, 2) = p(401:800, 2) + r.';
end

给定输入的returns这个矩阵:

path = trajectory(10, pi/2)


path =

     0         0
0.0251         0
0.0501         0
0.0752         0
0.1003         0
0.1253         0
0.1504         0
0.1754         0
0.2005         0
0.2256         0
0.2506         0
0.2757         0
0.3008         0
0.3258         0
0.3509         0
0.3759         0
0.4010         0
0.4261         0
0.4511         0
0.4762         0
0.5013         0
0.5263         0
0.5514         0
0.5764         0
0.6015         0
0.6266         0
0.6516         0
0.6767         0
0.7018         0
0.7268         0
0.7519         0
0.7769         0
0.8020         0
0.8271         0
0.8521         0
0.8772         0
0.9023         0
0.9273         0
0.9524         0
0.9774         0
1.0025         0
1.0276         0
1.0526         0
1.0777         0
1.1028         0
1.1278         0
1.1529         0
1.1779         0
1.2030         0
1.2281         0
1.2531         0
1.2782         0
1.3033         0
1.3283         0
1.3534         0
1.3784         0
1.4035         0
1.4286         0
1.4536         0
1.4787         0
1.5038         0
1.5288         0
1.5539         0
1.5789         0
1.6040         0
1.6291         0
1.6541         0
1.6792         0
1.7043         0
1.7293         0
1.7544         0
1.7794         0
1.8045         0
1.8296         0
1.8546         0
1.8797         0
1.9048         0
1.9298         0
1.9549         0
1.9799         0
2.0050         0
2.0301         0
2.0551         0
2.0802         0
2.1053         0
2.1303         0
2.1554         0
2.1805         0
2.2055         0
2.2306         0
2.2556         0
2.2807         0
2.3058         0
2.3308         0
2.3559         0
2.3810         0
2.4060         0
2.4311         0
2.4561         0
2.4812         0
2.5063         0
2.5313         0
2.5564         0
2.5815         0
2.6065         0
2.6316         0
2.6566         0
2.6817         0
2.7068         0
2.7318         0
2.7569         0
2.7820         0
2.8070         0
2.8321         0
2.8571         0
2.8822         0
2.9073         0
2.9323         0
2.9574         0
2.9825         0
3.0075         0
3.0326         0
3.0576         0
3.0827         0
3.1078         0
3.1328         0
3.1579         0
3.1830         0
3.2080         0
3.2331         0
3.2581         0
3.2832         0
3.3083         0
3.3333         0
3.3584         0
3.3835         0
3.4085         0
3.4336         0
3.4586         0
3.4837         0
3.5088         0
3.5338         0
3.5589         0
3.5840         0
3.6090         0
3.6341         0
3.6591         0
3.6842         0
3.7093         0
3.7343         0
3.7594         0
3.7845         0
3.8095         0
3.8346         0
3.8596         0
3.8847         0
3.9098         0
3.9348         0
3.9599         0
3.9850         0
4.0100         0
4.0351         0
4.0602         0
4.0852         0
4.1103         0
4.1353         0
4.1604         0
4.1855         0
4.2105         0
4.2356         0
4.2607         0
4.2857         0
4.3108         0
4.3358         0
4.3609         0
4.3860         0
4.4110         0
4.4361         0
4.4612         0
4.4862         0
4.5113         0
4.5363         0
4.5614         0
4.5865         0
4.6115         0
4.6366         0
4.6617         0
4.6867         0
4.7118         0
4.7368         0
4.7619         0
4.7870         0
4.8120         0
4.8371         0
4.8622         0
4.8872         0
4.9123         0
4.9373         0
4.9624         0
4.9875         0
5.0125         0
5.0376         0
5.0627         0
5.0877         0
5.1128         0
5.1378         0
5.1629         0
5.1880         0
5.2130         0
5.2381         0
5.2632         0
5.2882         0
5.3133         0
5.3383         0
5.3634         0
5.3885         0
5.4135         0
5.4386         0
5.4637         0
5.4887         0
5.5138         0
5.5388         0
5.5639         0
5.5890         0
5.6140         0
5.6391         0
5.6642         0
5.6892         0
5.7143         0
5.7393         0
5.7644         0
5.7895         0
5.8145         0
5.8396         0
5.8647         0
5.8897         0
5.9148         0
5.9398         0
5.9649         0
5.9900         0
6.0150         0
6.0401         0
6.0652         0
6.0902         0
6.1153         0
6.1404         0
6.1654         0
6.1905         0
6.2155         0
6.2406         0
6.2657         0
6.2907         0
6.3158         0
6.3409         0
6.3659         0
6.3910         0
6.4160         0
6.4411         0
6.4662         0
6.4912         0
6.5163         0
6.5414         0
6.5664         0
6.5915         0
6.6165         0
6.6416         0
6.6667         0
6.6917         0
6.7168         0
6.7419         0
6.7669         0
6.7920         0
6.8170         0
6.8421         0
6.8672         0
6.8922         0
6.9173         0
6.9424         0
6.9674         0
6.9925         0
7.0175         0
7.0426         0
7.0677         0
7.0927         0
7.1178         0
7.1429         0
7.1679         0
7.1930         0
7.2180         0
7.2431         0
7.2682         0
7.2932         0
7.3183         0
7.3434         0
7.3684         0
7.3935         0
7.4185         0
7.4436         0
7.4687         0
7.4937         0
7.5188         0
7.5439         0
7.5689         0
7.5940         0
7.6190         0
7.6441         0
7.6692         0
7.6942         0
7.7193         0
7.7444         0
7.7694         0
7.7945         0
7.8195         0
7.8446         0
7.8697         0
7.8947         0
7.9198         0
7.9449         0
7.9699         0
7.9950         0
8.0201         0
8.0451         0
8.0702         0
8.0952         0
8.1203         0
8.1454         0
8.1704         0
8.1955         0
8.2206         0
8.2456         0
8.2707         0
8.2957         0
8.3208         0
8.3459         0
8.3709         0
8.3960         0
8.4211         0
8.4461         0
8.4712         0
8.4962         0
8.5213         0
8.5464         0
8.5714         0
8.5965         0
8.6216         0
8.6466         0
8.6717         0
8.6967         0
8.7218         0
8.7469         0
8.7719         0
8.7970         0
8.8221         0
8.8471         0
8.8722         0
8.8972         0
8.9223         0
8.9474         0
8.9724         0
8.9975         0
9.0226         0
9.0476         0
9.0727         0
9.0977         0
9.1228         0
9.1479         0
9.1729         0
9.1980         0
9.2231         0
9.2481         0
9.2732         0
9.2982         0
9.3233         0
9.3484         0
9.3734         0
9.3985         0
9.4236         0
9.4486         0
9.4737         0
9.4987         0
9.5238         0
9.5489         0
9.5739         0
9.5990         0
9.6241         0
9.6491         0
9.6742         0
9.6992         0
9.7243         0
9.7494         0
9.7744         0
9.7995         0
9.8246         0
9.8496         0
9.8747         0
9.8997         0
9.9248         0
9.9499         0
9.9749         0
10.000         0
     0         0
     0    0.0039
     0    0.0079
     0    0.0118
     0    0.0157
     0    0.0197
     0    0.0236
     0    0.0276
     0    0.0315
     0    0.0354
     0    0.0394
     0    0.0433
     0    0.0472
     0    0.0512
     0    0.0551
     0    0.0591
     0    0.0630
     0    0.0669
     0    0.0709
     0    0.0748
     0    0.0787
     0    0.0827
     0    0.0866
     0    0.0905
     0    0.0945
     0    0.0984
     0    0.1024
     0    0.1063
     0    0.1102
     0    0.1142
     0    0.1181
     0    0.1220
     0    0.1260
     0    0.1299
     0    0.1339
     0    0.1378
     0    0.1417
     0    0.1457
     0    0.1496
     0    0.1535
     0    0.1575
     0    0.1614
     0    0.1653
     0    0.1693
     0    0.1732
     0    0.1772
     0    0.1811
     0    0.1850
     0    0.1890
     0    0.1929
     0    0.1968
     0    0.2008
     0    0.2047
     0    0.2087
     0    0.2126
     0    0.2165
     0    0.2205
     0    0.2244
     0    0.2283
     0    0.2323
     0    0.2362
     0    0.2401
     0    0.2441
     0    0.2480
     0    0.2520
     0    0.2559
     0    0.2598
     0    0.2638
     0    0.2677
     0    0.2716
     0    0.2756
     0    0.2795
     0    0.2835
     0    0.2874
     0    0.2913
     0    0.2953
     0    0.2992
     0    0.3031
     0    0.3071
     0    0.3110
     0    0.3149
     0    0.3189
     0    0.3228
     0    0.3268
     0    0.3307
     0    0.3346
     0    0.3386
     0    0.3425
     0    0.3464
     0    0.3504
     0    0.3543
     0    0.3583
     0    0.3622
     0    0.3661
     0    0.3701
     0    0.3740
     0    0.3779
     0    0.3819
     0    0.3858
     0    0.3897
     0    0.3937
     0    0.3976
     0    0.4016
     0    0.4055
     0    0.4094
     0    0.4134
     0    0.4173
     0    0.4212
     0    0.4252
     0    0.4291
     0    0.4331
     0    0.4370
     0    0.4409
     0    0.4449
     0    0.4488
     0    0.4527
     0    0.4567
     0    0.4606
     0    0.4645
     0    0.4685
     0    0.4724
     0    0.4764
     0    0.4803
     0    0.4842
     0    0.4882
     0    0.4921
     0    0.4960
     0    0.5000
     0    0.5039
     0    0.5079
     0    0.5118
     0    0.5157
     0    0.5197
     0    0.5236
     0    0.5275
     0    0.5315
     0    0.5354
     0    0.5393
     0    0.5433
     0    0.5472
     0    0.5512
     0    0.5551
     0    0.5590
     0    0.5630
     0    0.5669
     0    0.5708
     0    0.5748
     0    0.5787
     0    0.5827
     0    0.5866
     0    0.5905
     0    0.5945
     0    0.5984
     0    0.6023
     0    0.6063
     0    0.6102
     0    0.6141
     0    0.6181
     0    0.6220
     0    0.6260
     0    0.6299
     0    0.6338
     0    0.6378
     0    0.6417
     0    0.6456
     0    0.6496
     0    0.6535
     0    0.6575
     0    0.6614
     0    0.6653
     0    0.6693
     0    0.6732
     0    0.6771
     0    0.6811
     0    0.6850
     0    0.6889
     0    0.6929
     0    0.6968
     0    0.7008
     0    0.7047
     0    0.7086
     0    0.7126
     0    0.7165
     0    0.7204
     0    0.7244
     0    0.7283
     0    0.7323
     0    0.7362
     0    0.7401
     0    0.7441
     0    0.7480
     0    0.7519
     0    0.7559
     0    0.7598
     0    0.7637
     0    0.7677
     0    0.7716
     0    0.7756
     0    0.7795
     0    0.7834
     0    0.7874
     0    0.7913
     0    0.7952
     0    0.7992
     0    0.8031
     0    0.8071
     0    0.8110
     0    0.8149
     0    0.8189
     0    0.8228
     0    0.8267
     0    0.8307
     0    0.8346
     0    0.8385
     0    0.8425
     0    0.8464
     0    0.8504
     0    0.8543
     0    0.8582
     0    0.8622
     0    0.8661
     0    0.8700
     0    0.8740
     0    0.8779
     0    0.8819
     0    0.8858
     0    0.8897
     0    0.8937
     0    0.8976
     0    0.9015
     0    0.9055
     0    0.9094
     0    0.9133
     0    0.9173
     0    0.9212
     0    0.9252
     0    0.9291
     0    0.9330
     0    0.9370
     0    0.9409
     0    0.9448
     0    0.9488
     0    0.9527
     0    0.9567
     0    0.9606
     0    0.9645
     0    0.9685
     0    0.9724
     0    0.9763
     0    0.9803
     0    0.9842
     0    0.9881
     0    0.9921
     0    0.9960
     0    1.0000
     0    1.0039
     0    1.0078
     0    1.0118
     0    1.0157
     0    1.0196
     0    1.0236
     0    1.0275
     0    1.0315
     0    1.0354
     0    1.0393
     0    1.0433
     0    1.0472
     0    1.0511
     0    1.0551
     0    1.0590
     0    1.0629
     0    1.0669
     0    1.0708
     0    1.0748
     0    1.0787
     0    1.0826
     0    1.0866
     0    1.0905
     0    1.0944
     0    1.0984
     0    1.1023
     0    1.1063
     0    1.1102
     0    1.1141
     0    1.1181
     0    1.1220
     0    1.1259
     0    1.1299
     0    1.1338
     0    1.1377
     0    1.1417
     0    1.1456
     0    1.1496
     0    1.1535
     0    1.1574
     0    1.1614
     0    1.1653
     0    1.1692
     0    1.1732
     0    1.1771
     0    1.1810
     0    1.1850
     0    1.1889
     0    1.1929
     0    1.1968
     0    1.2007
     0    1.2047
     0    1.2086
     0    1.2125
     0    1.2165
     0    1.2204
     0    1.2244
     0    1.2283
     0    1.2322
     0    1.2362
     0    1.2401
     0    1.2440
     0    1.2480
     0    1.2519
     0    1.2558
     0    1.2598
     0    1.2637
     0    1.2677
     0    1.2716
     0    1.2755
     0    1.2795
     0    1.2834
     0    1.2873
     0    1.2913
     0    1.2952
     0    1.2992
     0    1.3031
     0    1.3070
     0    1.3110
     0    1.3149
     0    1.3188
     0    1.3228
     0    1.3267
     0    1.3306
     0    1.3346
     0    1.3385
     0    1.3425
     0    1.3464
     0    1.3503
     0    1.3543
     0    1.3582
     0    1.3621
     0    1.3661
     0    1.3700
     0    1.3740
     0    1.3779
     0    1.3818
     0    1.3858
     0    1.3897
     0    1.3936
     0    1.3976
     0    1.4015
     0    1.4054
     0    1.4094
     0    1.4133
     0    1.4173
     0    1.4212
     0    1.4251
     0    1.4291
     0    1.4330
     0    1.4369
     0    1.4409
     0    1.4448
     0    1.4488
     0    1.4527
     0    1.4566
     0    1.4606
     0    1.4645
     0    1.4684
     0    1.4724
     0    1.4763
     0    1.4802
     0    1.4842
     0    1.4881
     0    1.4921
     0    1.4960
     0    1.4999
     0    1.5039
     0    1.5078
     0    1.5117
     0    1.5157
     0    1.5196
     0    1.5236
     0    1.5275
     0    1.5314
     0    1.5354
     0    1.5393
     0    1.5432
     0    1.5472
     0    1.5511
     0    1.5550
     0    1.5590
     0    1.5629
     0    1.5669
     0    1.5708

但我想修改此函数,使其可以包含两个列表,例如:

trajectory([x1, x2, x3, ... xn], [phi1, phi2, phi3, ..., phin])

并像这样创建一个矩阵:

trajectory =
   x1   0
   x1+k 0
   .    0
   .    0
   x1_n 0
   0    phi1
   0    phi1+k
   0    .
   0    .
   0    phi1_n
   x2   0
   x2+k 0
   .    0
   .    0
   x2_n 0
   0    phi2
   0    phi2+k
   0    .
   0    .
   0    phi2_n
   

等等。所以我在想是否有一种更自动的方法来扩展矩阵,这样可以提供两个列表作为输入参数,并根据列表的元素扩展矩阵。

function p = matr(x, phi)
    
    p = zeros(800*length(x), 2);

    for ii = 1:length(x)
        x_dir = linspace(0, x(ii), 400);
        r = linspace(0, phi(ii), 400);
        p((800*(ii-1)+1):(800*(ii-1)+400), 1) = x_dir;
        p((800*ii-399):(800*ii), 2) = r;
    end

end

function p2 = matr_compound(x, phi)
    p2 = [];
    for ii = 1:length(x)
        p2 = [p2; matr(x(ii), phi(ii))];
    end
end