# Stop the for loop

1 visualizzazione (ultimi 30 giorni)
I want to stop a loop when the the modulo 26 of the determinant times a 'number', then use such 'number' to multiply the inverse of a matrix. The code is:
clc, clear;
A=input('Symmetric matrix: ');
format rat;
d=det(A)
Minv=inv(A);
M1=(Minv*d);
for i=1:100
j=mod(d*i, 26);
x=i;
if j==1, break, end
end
x
Z=round(mod((M1*x), 26))
However I can't make the for loop to stop when the value of 'j' becomes 1 and use the value of 'x' to multiply the matrix; every time the value of x is the final value of 'i', in this case 100.
##### 1 CommentoMostra NessunoNascondi Nessuno
Oleg Komarov il 29 Mag 2012
Why do you expect the modulus of d*i should ever be 1?

Accedi per commentare.

### Risposta accettata

Geoff il 29 Mag 2012
Time for the most basic of debugging practises...
After you calculate j, put in the following line of code:
disp(j);
I'm willing to bet that j is either always even (because d is even), or is a sufficiently fractional non-integer.
When you work out what's happening and fix it, then consider the following. From a 'performance' perspective (well, really it's about not doing unnecessary things), just save the value into x once:
x = [];
for i = 1:100
if mod(d*i,26) == 1
x = i;
break;
end
end
if isempty(x)
end
Doesn't really matter here, but it's worth getting into the habit of recognising some repeated calculations as being pointless. Call it "eco-coding". =)
##### 3 CommentiMostra 2 commenti meno recentiNascondi 2 commenti meno recenti
That was it! The only thing I had to finish so my encryption/decryption program was finished. I am just starting to learn matlab and your help is really appreciated.

Accedi per commentare.

### Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by