Matrix from triple loop

I am trying to simplify the code from following loop:
for i = 1:10
for j = 11:20
RS_1(:,i) = signal(:,i) - signal(:,j);
end
for j = 21:30
RS_2(:,i) = signal(:,i) - signal(:,j);
end
for j = 31:40
RS_3(:,i) = signal(:,i) - signal(:,j);
end
for j = 41:50
RS_4(:,i) = signal(:,i) - signal(:,j);
end
RS = [RS_1 RS_2 RS_3 RS_4];
end
With this one:
for i = 1:10
for j = 11:50
for k = 1:40
RS(:,k) = signal(:,i) - signal(:,j);
end
end
end
I am wondering why do I get different matrix RS?

 Accepted Answer

It doesn't work because your are using the RS_n matrices in your second code. This is a simplification of the first code:
RS_1(:,1:10) = signal(:,1:10) - signal(:,11:20);
RS_2(:,1:10) = signal(:,1:10) - signal(:,21:30);
RS_3(:,1:10) = signal(:,1:10) - signal(:,31:40);
RS_4(:,1:10) = signal(:,1:10) - signal(:,41:50);
RS = [RS_1 RS_2 RS_3 RS_4];

3 Comments

cniv_we
cniv_we on 28 Sep 2016
Edited: cniv_we on 28 Sep 2016
Hi thanks for the answer. Is it possible to loop this code? I tried this one:
for i = 1:10
RS_1(:,i) = signal(:,i) - signal(:,10+i);
RS_2(:,i) = signal(:,i) - signal(:,20+i);
RS_3(:,i) = signal(:,i) - signal(:,30+i);
RS_4(:,i) = signal(:,i) - signal(:,40+i);
RS = [RS_1 RS_2 RS_3 RS_4];
end
But if possible I would like to loop 10+i, 20+i, ... as well so that I don't need to use RS_1, RS_2, etc. The dimension of matrix RS is 1000 rows x 40 columns.
Ah ok! simple like this:
for i=[11,21,31,41]
RS(:,i-10:i-1) = signal(:,1:10)-signal(:,k:k+9);
end
That's it.
Thanks!

Sign in to comment.

More Answers (0)

Categories

Find more on Operators and Elementary Operations in Help Center and File Exchange

Asked:

on 28 Sep 2016

Commented:

on 28 Sep 2016

Community Treasure Hunt

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

Start Hunting!