Using nested for loop to create a 3D matrix ?

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 Comments

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?
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.

Sign in to comment.

 Accepted Answer

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.

More Answers (0)

Categories

Find more on MATLAB in Help Center and File Exchange

Products

Release

R2018a

Community Treasure Hunt

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

Start Hunting!