Elegant code: How do I make my if,switch, etc. statements more compact?
20 views (last 30 days)
Show older comments
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
0 Comments
Answers (1)
Sean de Wolski
on 22 Jun 2011
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...
0 Comments
See Also
Categories
Find more on Graphics Objects in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!