How can I interpolate a vector into a shorter one?
古いコメントを表示
Here is my problem: I have two vectors which I wanna make them same in the length. So my approach was trying to interpolate the long one into the same size of the shorter one.
For example:
A = [1,2,3,4,5]
B = [1,3,5]
I would like to make A to [1.67, 3.33, 5]
Is there a way that MATLAB can help me to interpolate a vector into a shorter one? Or there are other approaches for my problem?
Thanks,
8 件のコメント
Azzi Abdelmalek
2013 年 10 月 16 日
編集済み: Azzi Abdelmalek
2013 年 10 月 16 日
What is the relation between your vectors? What are your criterion?
zheng
2013 年 10 月 16 日
Azzi Abdelmalek
2013 年 10 月 16 日
Ok, but how did you get [ 1.67, 3.33, 5] ?
zheng
2013 年 10 月 16 日
zheng
2013 年 10 月 16 日
sixwwwwww
2013 年 10 月 16 日
You can do it using some kind of manipulation. For example you can say that
A = [1.5 3.5 5]
using the logic that new A vector has value which are averaged over two values in old A vector as you can see until you can't make more averaging when it comes to non-even element. You should try to think about such manipulation
zheng
2013 年 10 月 16 日
回答 (1 件)
sixwwwwww
2013 年 10 月 16 日
In case that you want to make longer vector shorter you can use some manipulation(For example I call it forward manipulation). Following is a manipulation example
A = [1.5 3.5 5];
count = 1;
for i = 1:length(A)
if i ~= length(A)
A_new(count) = A(i) * 2 - 2 * i;
A_new(count + 1) = A(i) * 2 - A_new(count);
count = count + 2;
else
A_new(count) = A(i);
end
end
And vice versa if you want to make a longer vector shorter you can do some manipulation.(For example I call it backward manipulation). Following is a manipulation example
A = 1:5;
count = 1;
for i = 1:2:length(A)
if i ~= length(A)
A_new(count) = (A(i) + A(i + 1)) / 2;
count = count + 1;
else
A_new(count) = A(i);
end
end
I hope it helps. Good luck!
カテゴリ
ヘルプ センター および File Exchange で Multirate Signal Processing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!