Let me split your data first, to avoid mixing different variables
A=[0 0.1 -2 0.55
0 0.1 0 0.5
0 0.1 2 0.55
0 1 -2 1.1
0 1 0 1
0 1 2 1.1
1000 0.1 -2 0.8
1000 0.1 0 0.75
1000 0.1 2 0.8
1000 1 -2 1.35
1000 1 0 1.25
1000 1 2 1.35]
A=A'
alt=A(1,:);match=A(2,:);alpha=A(3,:);Cn=A(4,:)
Now, when interpolating, it shouldn't be relevant whether your data is 'monotonic' or not. It's the speed of change what matters.
For your alpha signal:
n_alpha1=[1:1:length(alpha)]
r=3;
alpha2=interp(alpha,3)
n_alpha2=[1:1:length(alpha2)]
the following doesn't work because original and interpolated do not have same time base
plot(n_alpha1,alpha,'red',n_alpha2,alpha2,'b','LineWidth',1.5);
to get them same time base:
n_alpha13=[1:r:r*length(alpha)];
f3=figure(3);plot(n_alpha13,alpha,'r',n_alpha2,alpha2,'b','LineWidth',1.5);grid on;
f3.Name='signal alpha';
xlabel('t');ylabel('alpha');
So, as long as you keep same interpolation rate for all your signals, in this example r=3, all your signals will remain aligned, which is you have specifically mentioned in the question.
Repeating for the other 3 signals:
n_alt=[1:1:length(alt)];
alt2=interp(alt,r);
n_alt13=[1:r:r*length(alt)];
n_alt2=[1:1:length(alt2)];
n_Cn=[1:1:length(Cn)];
Cn2=interp(Cn,r);
n_Cn13=[1:r:r*length(Cn)];
n_Cn2=[1:1:length(Cn2)];
n_match=[1:1:length(match)];
match2=interp(match,r);
n_match13=[1:r:r*length(match)];
n_match2=[1:1:length(match2)];
f1=figure(1);plot(n_alt13,alt,'red',n_alt2,alt2,'blue','LineWidth',1.5);grid on;
f1.Name='signal alt';
f2=figure(2);plot(n_match13,match,'red',n_match2,match2,'blue','LineWidth',1.5);grid on;
f2.Name='signal match';
f4=figure(4);plot(n_Cn13,Cn,'red',n_Cn2,Cn2,'blue','LineWidth',1.5);grid on;
f4.Name='signal Cn';
You can repack the signals back to the original format
B=[alt2;match2;alpha2;Cn2];
B=B'
=
1.0e+03 *
0 0.0001 -0.0020 0.0005
0 0.0001 -0.0015 0.0005
0 0.0001 -0.0009 0.0005
0 0.0001 0.0000 0.0005
0 0.0000 0.0012 0.0005
0 0.0000 0.0020 0.0005
-0.0000 0.0001 0.0020 0.0005
-0.0057 0.0004 0.0008 0.0007
-0.0062 0.0007 -0.0008 0.0009
0.0000 0.0010 -0.0020 0.0011
0.0266 0.0011 -0.0021 0.0011
0.0305 0.0010 -0.0014 0.0011
-0.0000 0.0010 0 0.0010
-0.0853 0.0010 0.0014 0.0010
-0.1089 0.0011 0.0021 0.0011
-0.0000 0.0010 0.0020 0.0011
..
there are other commands you may want to have a look, to control the ringing. Linear interpolation can be done with command linspace, but linspace does not take vector inputs, just scalars.
Ryan would you please be so kind to mark my answer as Accepted Answer?
To any other reader, please if you find this answer of any help solving your question,
please click on the thumbs-up vote link,
thanks in advance
John