How to interpolate based on the first column in a matrix and fill the interpolated rows of the other columns with set values?

조회 수: 4 (최근 30일)
Hello,
I am trying to interpolate between values in column 1 of an nX8 matrix. I want the interpolation step to be constant (e.g. step size = 1). I want to start at 0 and go up to the first value in column 1, then add the correct values in between successive rows. I want to insert these interpolated values into the original nX8 matrix, but I want to specify values for the rest of the inserted row (i.e. the remaining 7 elements in the row) to be a mixture of zeros or NaNs (it would be the same for every row). Here is an example of what I am trying to do but with fewer columns:
example = [3.0000 0.9172 0.3804 0.5308 0.5688
5.0000 0.2858 0.5678 0.7792 0.4694
7.0000 0.7572 0.0759 0.9340 0.0119
10.0000 0.7537 0.0540 0.1299 0.3371];
%...Code to do the job...
result = [0.0000 NaN NaN 0 NaN
1.0000 NaN NaN 0 NaN
2.0000 NaN NaN 0 NaN
3.0000 0.9172 0.3804 0.5308 0.5688
4.0000 NaN NaN 0 NaN
5.0000 0.2858 0.5678 0.7792 0.4694
6.0000 NaN NaN 0 NaN
7.0000 0.7572 0.0759 0.9340 0.0119
8.0000 NaN NaN 0 NaN
9.0000 NaN NaN 0 NaN
10.0000 0.7537 0.0540 0.1299 0.3371];
Thanks!

채택된 답변

Matt J
Matt J 2021년 11월 12일
편집: Matt J 2021년 11월 12일
example = [3.0000 0.9172 0.3804 0.5308 0.5688
5.0000 0.2858 0.5678 0.7792 0.4694
7.0000 0.7572 0.0759 0.9340 0.0119
10.0000 0.7537 0.0540 0.1299 0.3371];
step=1;
fill=[ NaN NaN 0 NaN];
first=( 0:step:max(example(:,1)) ).';
n=numel(first);
result=[first, repmat(fill,n,1)];
[tf,loc]=ismembertol(example(:,1),first);
result(loc(tf),:)=example(tf,:)
result = 11×5
0 NaN NaN 0 NaN 1.0000 NaN NaN 0 NaN 2.0000 NaN NaN 0 NaN 3.0000 0.9172 0.3804 0.5308 0.5688 4.0000 NaN NaN 0 NaN 5.0000 0.2858 0.5678 0.7792 0.4694 6.0000 NaN NaN 0 NaN 7.0000 0.7572 0.0759 0.9340 0.0119 8.0000 NaN NaN 0 NaN 9.0000 NaN NaN 0 NaN

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Interpolation에 대해 자세히 알아보기

제품


릴리스

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by