在2D MATLAB数组中的两点之间取一维切片

问题描述 投票:2回答:1

我正在尝试编写一个函数,在2D MATLAB数组中给出2个点将返回连接点的元素的1D array

所以arr=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25 ]

arr(4,2)arr(1,5)之间的分数将作为[17 13 9 5返回]。

例如,虽然我很好,如果需要插入点。

如果它有用,这就是我在Python中的表现

length = int(np.hypot(x1-x0, y1-y0))
xx, yy = np.linspace(x0, x1, length), np.linspace(y0, y1, length)
zi = arr[xx.astype(np.int), yy.astype(np.int)]
arrays matlab
1个回答
3
投票

你可以使用interp2

让我们说我们想从(1.3, 2.4)(4.6, 3.5)采样20个均匀的空间点

arr=[ 1  2  3  4  5;
      6  7  8  9 10;
     11 12 13 14 15;
     16 17 18 19 20;
     21 22 23 24 25 ]

[x, y] = meshgrid(1:5,1:5)
xx = linspace (1.3, 4.6, 20)
yy = linspace (2.4, 3.5, 20)
interp2(x,y,arr, xx,yy)

得到:

 8.30000000000000
 8.76315789473684
 9.22631578947368
 9.68947368421053
10.15263157894737
10.61578947368421
11.07894736842105
11.54210526315790
12.00526315789474
12.46842105263158
12.93157894736842
13.39473684210526
13.85789473684211
14.32105263157895
14.78421052631579
15.24736842105263
15.71052631578947
16.17368421052632
16.63684210526316
17.10000000000000

你可以看到线条如何跟随你的网格:

mesh(x,y,arr)
hold on
plot3(xx,yy,interp2(x,y,arr, xx,yy))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.