Using nested for loop to create a 3D matrix ?

1 Ansicht (letzte 30 Tage)
Perrine Cristante
Perrine Cristante am 6 Jun. 2018
Hello,
I have an ECG signal to parse to find values corresponding to a certain time window. The start and stop times of the window are respectively stored in QRSavgd and QRSavgf. X is my time scale.
B = [];
X = samples*1000/f;
A = horzcat(ECG(:,1:12),X.');
for i = 1:length(QRS)
for j = 1:length(ECG)
if A(j,13)>=QRSavgd(i) && A(j,13)<=QRSavgf(i)
B(:,:,j) = vertcat(B,A(j,:));
% plot(B);
end
end
end
I would like to store each B array found with the j loop in a 3D matrix so that I can differentiate each iteration of the j loop, to know which values I get when j=1, j=2...
Thanks
  2 Kommentare
Stephen23
Stephen23 am 6 Jun. 2018
It does not make much sense to use both concatenation and indexing to collect your values:
B(:,:,j) = vertcat(B,A(j,:));
What are you hoping to achieve?
Perrine Cristante
Perrine Cristante am 6 Jun. 2018
I would like to be able to overlap the QRSs on a plot, hence getting each individual QRS in a 3D plot x,y,z where x is the ECG derivation, y is the amplitude and z is the QRS index.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Perrine Cristante
Perrine Cristante am 7 Jun. 2018
I finally found how to do it using cell arrays instead of 3D matrix, so I'll put the solution for the ones with the same problem as me :
B = {};
X = samples*1000/f;
A = horzcat(ECG(:,1:12),X.');
for i = 1:length(QRS)
C = [];
for j = 1:length(ECG)
if A(j,13)>=QRSavgd(i) && A(j,13)<=QRSavgf(i)
C = vertcat(C,A(j,1:12));
end
end
B{i} = C;
end
This creates a 2D matrix named C and stocks it in the cell array named B.

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Produkte


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by