Replicating values a certain number of times

1 回表示 (過去 30 日間)
Muneer
Muneer 2013 年 12 月 3 日
回答済み: Andrei Bobrov 2013 年 12 月 3 日
Hello, I have a long array of data from 0 to 1959 in steps of 1. Is there any way to expand that data so that each value repeats x number of times? ie. if x is 4
new = 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3...
I have compressed data and I want to be able to expand it with this approximation.
Thanks for your help!

採用された回答

Wayne King
Wayne King 2013 年 12 月 3 日
編集済み: Wayne King 2013 年 12 月 3 日
There are a number of ways to do this.
One way use a constant interpolator:
x = 0:9;
h = ones(4,1);
xnew = zeros(40,1);
xnew(1:4:end) = x;
y = filter(h,1,xnew);
Another way use repmat()
x = (0:9)';
x = (repmat(x,1,4))';
x = reshape(x,40,1);

その他の回答 (2 件)

sixwwwwww
sixwwwwww 2013 年 12 月 3 日
編集済み: sixwwwwww 2013 年 12 月 3 日
try this:
x = 1:100; % Values to be repeated
a = 4; % Number of times each value is repeated
b = repmat(x, 4);
b = reshape(b, 1, []); % Final result

Andrei Bobrov
Andrei Bobrov 2013 年 12 月 3 日
Jos (10584)'s idea:
k = 1959;
n = 4;
x = floor((0:(k+1)*n-1)/n);

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by