Matlab code running loops to meet conditions

  • Thread starter thestrong
  • Start date
  • #1
9
0

Homework Statement


This is not homework but I am trying to solve a problem to see to general a set of numbers for the grassmanian equations to use in something else.[/B]

I have five variables a,b,c,d,e. a-b,a-c,a-d,a-e,b-a,b-c,.....etc so that none of them are the same so it generates all numbers from 1,2,3,4,....20 in modular 21. Clearly a,b,c,d,e can not be the same since it will obviously not generate all the numbers. Below is my matlab code.

a,b,c,d,e must be in the {0,1,2,3,....20}

The code does not even output anything.

The Attempt at a Solution


Matlab:
clear all;
close all;
k=21;
flag =0;
for i =0:16
a=i;
if flag ==1
  break;
end
  for j=1:17
b=j;
if flag == 1
  break;
end
  for h =2:18
c= h;
if flag == 1
  break;
end
  for l=3:19
d=l;
if flag ==1
  break;
end
  for p=4:20
e=p;

g1=a-b;
g2=a-c;
g3=a-d;
g4=a-e;
g5=b-a;
g6=b-c;
g7=b-d;
g8=b-e;
g9=c-a;
g10=c-b;
g11=c-d;
g12=c-e;
g13=d-a;
g14=d-b;
g15=d-c;
g16=d-e;
g17=e-a;
g18=e-b;
g19=e-c;
g20=e-d;
G=[ mod(g1,k), mod(g2,k), mod(g3,k), mod(g4,k), mod(g5,k), mod(g6,k), mod(g7,k), mod(g8,k), mod(g9,k), mod(g10,k), mod(g11,k), mod(g12,k), mod(g13,k), mod(g14,k), mod(g15,k), mod(g16,k), mod(g17,k), mod(g18,k), mod(g19,k), mod(g20,k)];
S=sort(G);
AllElements=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
true=isequal(S,AllElements);
if (true == 1)
  answers=[a,b,c,d,e];
  flag = 1;
  break;
end
  end
  end
  end
  end
end
 
Last edited:

Answers and Replies

  • #2
12,809
6,690
I added code tags to your listing for better preaentation.

However it would be better if you can fix the indenting too.
 
  • #3
donpacino
Gold Member
1,439
282
what is the code supposed to output?
 
  • #4
9
0
Oh yeah I forgot to code that. It is suppose to just stop when the condition is met that the entire G = {1,2,3,4,5,....20} is generated from the values of a,b,c,d,e and I just want the values of a,b,c,d,e.
 
  • #5
donpacino
Gold Member
1,439
282
the values of abcd & e are stored in your answers variable....
just print it....
or add a line below that says
answers
 
  • #6
9
0
I tried that, but when I run the code my workspace is empty.
 
  • #7
donpacino
Gold Member
1,439
282
that is true. So there is one way to clear your workstation, whcih is to use the clear all command
you have code after it, there the code must not run.

If I were you I would check my while loop, or remove it all together, infinite loops are no fun
 
  • #8
9
0
I removed the while loop, which I do not think is actually necessary. It does have a workspace, but the code is breaking at an incorrect solution of
S =

1 1 1 1 2 2 2 3 3 4 17 18 18 19 19 19 20 20 20 20. When it should be S = 1 2 3 ....20.
 
  • #9
9
0
I resolved my issue. Thanks!
 

Related Threads on Matlab code running loops to meet conditions

  • Last Post
Replies
1
Views
678
  • Last Post
Replies
1
Views
1K
Replies
3
Views
8K
  • Last Post
Replies
14
Views
4K
  • Last Post
Replies
1
Views
10K
  • Last Post
Replies
3
Views
22K
  • Last Post
Replies
8
Views
1K
Replies
3
Views
2K
  • Last Post
Replies
6
Views
4K
  • Last Post
Replies
0
Views
5K
Top