Loop multidimensional array doesn't work
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Armando MAROZZI
am 4 Jul. 2021
Kommentiert: Armando MAROZZI
am 4 Jul. 2021
Let's say I have some data TxN. The first column (N_1) of the data changes every time, while the rest stays fixed. Therefore, I want to create a multidimensional array TxNxM, where M takes care of the different N_1s.
Let me take an example to make it clearer:
% original data where x changes every time while z is always the same
x = randn(100,10);
z = ones(100, 5);
% this is just one of the 10 datasets
y = [x(:,1),z];
% store results
Y = nan(size(y,1), size(y,2),size(x,2));
% Create 10 datasets where the first column changes every time (x(:,i))
% while the rest stays fixed
for i = size(x,2)
Y(:,:,i) = [x(:,i), z];
end
The issue with this is that I only get data for the last column of x while all the rest is NaN.
What am I doing wrong?
Can anyone help me?
0 Kommentare
Akzeptierte Antwort
Matt J
am 4 Jul. 2021
Bearbeitet: Matt J
am 4 Jul. 2021
You could fix it by changing the opening of your for-loop to,
for i = 1:size(x,2)
but below is a more efficient loop-free method.
Y = nan(size(y,1), size(y,2),size(x,2));
Y(:,1,:)=x;
Y(:,2:end,:)=repmat(z,1,1,size(x,2));
3 Kommentare
Matt J
am 4 Jul. 2021
I would like to note, though, that it seems a bit wasteful to put so much duplicate data in Y. I don't see why working with x and z as separate arrays wouldn't be preferred.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!