Append to vector of different sizes in for loop

6 vues (au cours des 30 derniers jours)
Jørgen Fone Pedersen
Jørgen Fone Pedersen le 14 Fév 2021
Modifié(e) : dpb le 15 Fév 2021
Hi.
How does one append a vector to a another vector within a loop.
I have the code below: Point is i want the signal between the first and second indices of ipts. then the third and fourth et cetera up to the nineteenth to twentieth.
with this code I only get the last part nineteenth to twentieth.
i = 1;
while i < 19;
A = TimeSeries_short(ipts(i):ipts(i+1));
i = i+2;
end
.mat file is attached.

Réponse acceptée

Stephen23
Stephen23 le 15 Fév 2021
Simpler:
S = load('test_file.mat')
S = struct with fields:
TimeSeries_short: [1×47000 single] ipts: [1182 3977 5678 8607 10129 13100 14657 17610 19172 22121 23650 26578 28197 31090 32741 35696 37300 40136 41691 44808]
fun = @(b,e)S.TimeSeries_short(b:e);
out = arrayfun(fun,S.ipts(1:2:end),S.ipts(2:2:end),'uni',0)
out = 1x10 cell array
{1×2796 single} {1×2930 single} {1×2972 single} {1×2954 single} {1×2950 single} {1×2929 single} {1×2894 single} {1×2956 single} {1×2837 single} {1×3118 single}

Plus de réponses (1)

dpb
dpb le 14 Fév 2021
The short answer is
i = 1;
A=[];
for i=1:2:numel(ipts)
A = [A;TimeSeries_short(ipts(i):ipts(i+1),:);
end
Normally one frowns on dynamic reallocation, but presuming the overall array is going to be relatively small, the time taken won't be excessive.
If A is going to be very large, then one will want to calculate the final size and compute the indices going in and explicitly set the rows.
  6 commentaires
dpb
dpb le 15 Fév 2021
Modifié(e) : dpb le 15 Fév 2021
OK, I presumed a column-wise array, not a vector.
Hence I referenced
T(i1:i2,:)
to pull all rows of the array T, not just a single column. For a vector need just the 1D indexing expression.
A = [A;TimeSeries_short(ipts(i):ipts(i+1))];
instead for a vector (column output); replace semi-colon with comma for row output.
Jørgen Fone Pedersen
Jørgen Fone Pedersen le 15 Fév 2021
ahh, thank you.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by