Cara cepat untuk meratakan nilai menggunakan array yang diberikan di Matlab

0

Saya mencari cara cepat untuk membuat garis lurus nilai antara nilai-nilai di Matlab.

Contoh:

a = ([10 20 30 40])
index = 1.5 //a float index
func(a,index); //shall return a value between index 1 and 2. In this case would be the value 15.
Ans = 15
Cleber Marques
sumber

Jawaban:

2
// define a function that interpolates a vector 'a' defined on a regular grid
// at interpolated support coordinates 'x'
f = @(a, x) interp1( 1:length(a), a, x);

// test vector (given by OP)
a=[10 20 30 40];
// this vector interpolated at coordinate 1.5 gives 15
// (can be a vector of coordinates)
f(a, 1.5)

lakukan apa yang kamu inginkan.

Vektor aberisi nilai-nilai yang akan diinterpolasi pada koordinat spasi teratur yang berkisar dari 1 hingga panjang a. Untuk mencapai itu, seseorang dapat menggunakan fungsi Matlab interp1, yang melakukan interpolasi linier yang diberikan titik dukungan (argumen pertama), nilai pada titik-titik dukungan ini (argumen kedua) dan koordinat interpolasi yang diminta (argumen ketiga). Namun, sesuai permintaan OP untuk melakukan interpolasi dengan pemanggilan fungsi spesifik pendek, fungsi ini fmemungkinkan untuk menginterpolasi vektor apada koordinat tertentu (atau vektor koordinat) selama mereka tetap dalam jangkauan [1,length(a)].

Sander
sumber