Compensate the vector with the last entry

I have a length L vector contains some numbers, I want to compensate this vector to length K, where K > L, with repeating the last entry of the vector. For example, the vector is [2 4 7 3], after compensate, it will be [2 4 7 3 3 3 3 3]. I hope there is an efficient way to do so because I actually have more than 10^4 vectors to compensate.
Thanks,

2 Commenti

"I hope there is an efficient way to do so because I actually have more than 10^4 vectors to compensate."
Do you really have 1e4 separate vectors stored in the workspace? How did you get them all there?
sorry for the ambiguity. I have a loop around 10^4 times, where within each loop I will need compensate the vector :)

Accedi per commentare.

 Risposta accettata

Più risposte (1)

If you were using release R2023b or later, you could use the paddata function with the Side name-value argument and either the FillValue name-value argument or the Pattern name-value argument with the 'edge' pattern.
x = [2 4 7 3]
x = 1x4
2 4 7 3
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
y = paddata(x, 7, Side = 'trailing', Pattern = 'edge')
y = 1x7
2 4 7 3 3 3 3
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
Or to show FillValue with a different value:
y = paddata(x, 7, Side = 'trailing', FillValue = -999)
y = 1x7
2 4 7 3 -999 -999 -999
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>

Categorie

Scopri di più su MATLAB in Centro assistenza e File Exchange

Prodotti

Release

R2022b

Tag

Richiesto:

il 25 Apr 2023

Risposto:

il 31 Lug 2024

Community Treasure Hunt

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

Start Hunting!

Translated by