Elegant code: How do I make my if,switch, etc. statements more compact?

Ideally, I want to be able to go past a case 9 up to however many are necessary, but I'd rather not deal with tediously copy&pasting code. Is there a way to make this code simpler/more elegant/more compact using, perhaps, regular expressions? Or is there a better way to loop the code? A sample of the data is also below the code. Thanks for any help!
clc; format short;
dat=input('Enter file name (as ''filename.txt''): ');
data = importdata(dat);
row = zeros((150000),(2));
i=1;
j=1;
while i < length(data);
switch data(i,1)
% ---------------------------------------------------------
% Case 1: Only 2 trigger interactions are observed.
% ---------------------------------------------------------
case 2
row(j,:) = [data(i+1,1), data(i+2,1)];
row(j+1,:) = [data(i+3,1), data(i+4,1)];
i = i+5;
j = j+2;
% ---------------------------------------------------------
% Case 2: Three trigger interactions are observed.
% ---------------------------------------------------------
case 3
row(j,:) = [data(i+1,1),data(i+2,1)];
row(j+1,:) = [data(i+3,1),data(i+4,1)];
row(j+2,:) = [data(i+5,1),data(i+6,1)];
i = i+7;
j = j+3;
% ---------------------------------------------------------
% Case 3: Four trigger interactions are observed.
% ---------------------------------------------------------
case 4
row(j,:) = [data(i+1,1), data(i+2,1)];
row(j+1,:) = [data(i+3,1), data(i+4,1)];
row(j+2,:) = [data(i+5,1), data(i+6,1)];
row(j+3,:) = [data(i+7,1), data(i+8,1)];
i = i+9;
j = j+4;
% ---------------------------------------------------------
% Case 4: Five trigger interactions are observed.
% ---------------------------------------------------------
case 5
row(j,:) = [data(i+1,1), data(i+2,1)];
row(j+1,:) = [data(i+3,1), data(i+4,1)];
row(j+2,:) = [data(i+5,1), data(i+6,1)];
row(j+3,:) = [data(i+7,1), data(i+8,1)];
row(j+4,:) = [data(i+9,1), data(i+10,1)];
i = i+11;
j = j+5;
% ---------------------------------------------------------
% Case 5: Six trigger interactions are observed.
% ---------------------------------------------------------
case 6
row(j+1,:) = [data(i+3,1), data(i+4,1)];
row(j+2,:) = [data(i+5,1), data(i+6,1)];
row(j+3,:) = [data(i+7,1), data(i+8,1)];
row(j+4,:) = [data(i+9,1), data(i+10,1)];
row(j+5,:) = [data(i+11,1), data(i+12,1)];
i = i+13;
j = j+6;
% ---------------------------------------------------------
% Case 6: Seven trigger interactions are observed.
% ---------------------------------------------------------
case 7
row(j+1,:) = [data(i+3,1), data(i+4,1)];
row(j+2,:) = [data(i+5,1), data(i+6,1)];
row(j+3,:) = [data(i+7,1), data(i+8,1)];
row(j+4,:) = [data(i+9,1), data(i+10,1)];
row(j+5,:) = [data(i+11,1), data(i+12,1)];
row(j+6,:) = [data(i+13,1), data(i+14,1)];
i = i+15;
j = j+7;
% ---------------------------------------------------------
% Case 7: Eight trigger interactions are observed.
% ---------------------------------------------------------
case 8
row(j+1,:) = [data(i+3,1), data(i+4,1)];
row(j+2,:) = [data(i+5,1), data(i+6,1)];
row(j+3,:) = [data(i+7,1), data(i+8,1)];
row(j+4,:) = [data(i+9,1), data(i+10,1)];
row(j+5,:) = [data(i+11,1), data(i+12,1)];
row(j+6,:) = [data(i+13,1), data(i+14,1)];
row(j+7,:) = [data(i+15,1), data(i+16,1)];
i = i+17;
j = j+8;
% ---------------------------------------------------------
% Case 8: Nine trigger interactions are observed.
% ---------------------------------------------------------
case 9
row(j+1,:) = [data(i+3,1), data(i+4,1)];
row(j+2,:) = [data(i+5,1), data(i+6,1)];
row(j+3,:) = [data(i+7,1), data(i+8,1)];
row(j+4,:) = [data(i+9,1), data(i+10,1)];
row(j+5,:) = [data(i+11,1), data(i+12,1)];
row(j+6,:) = [data(i+13,1), data(i+14,1)];
row(j+7,:) = [data(i+15,1), data(i+16,1)];
row(j+8,:) = [data(i+17,1), data(i+18,1)];
i = i+19;
j = j+9;
% ---------------------------------------------------------
% Case 9: Ten trigger interactions are observed.
% ---------------------------------------------------------
case 10
row(j+1,:) = [data(i+3,1), data(i+4,1)];
row(j+2,:) = [data(i+5,1), data(i+6,1)];
row(j+3,:) = [data(i+7,1), data(i+8,1)];
row(j+4,:) = [data(i+9,1), data(i+10,1)];
row(j+5,:) = [data(i+11,1), data(i+12,1)];
row(j+6,:) = [data(i+13,1), data(i+14,1)];
row(j+7,:) = [data(i+15,1), data(i+16,1)];
row(j+8,:) = [data(i+17,1), data(i+18,1)];
row(j+9,:) = [data(i+19,1), data(i+20,1)];
i = i+21;
j = j+10;
end
end
row
% --------------------------------------------------------- Sample data % ---------------------------------------------------------
2
8 61.205
31 60.76
2
17 57.93
6 58.34
3
0 32.325
5 22.98
18 60.24
2
15 58.981
5 59.34
7
3 22.34
4 25.434
7 12.23
16 15.237
23 16.12
26 11.42
30 18.81

Answers (1)

just use a for-loop. All of your indices and results appear to be dependent on the case #. Use the case # to make your matrix...

Categories

Find more on Graphics Objects in Help Center and File Exchange

Asked:

on 22 Jun 2011

Community Treasure Hunt

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

Start Hunting!