How can I interpolate rows in an array with a loop?

5 Ansichten (letzte 30 Tage)
Paola
Paola am 17 Aug. 2021
Beantwortet: Yazan am 18 Aug. 2021
Hi I would like to interpolate rows of an array with a loop. I wrote this code but it doesn't work, can you help me to solve this problem? Thanks
for i=1:size(A,1)
vq=0.01
b(i,:)=interp1((1:length(A{i,:})),A{i,:},vq)
end

Antworten (1)

Yazan
Yazan am 18 Aug. 2021
if A is an array, then Matlab will throw an error, as you are using curly braces for indexing.
Below is a demo on how to user interp1
t0 = 1:1:10;
% create a matrix contaning data sampled at step = 1;
t = repmat(t0, [3,1]);
x = (1:3)';
A = x.*t;
% assume you need to sample at a step = 0.5
tq = t0(1):0.5:t0(end);
% interpolate every row linearly and save results in B
B = nan(size(A,1), length(tq));
for j=1:size(A,1)
B(j, :) = interp1(t0, A(j,:), tq);
end
% plot one row of A and B
figure,
plot(tq, B(1,:)); hold on
plot(t0, A(1,:), 's'); grid minor
legend({'Interpolated data', 'Original data'})

Kategorien

Mehr zu Interpolation finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by