how to multiply matrix with vector n times?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
hi guys i have this code:
M =[0 1 0 0 0 0 0 0;0 0 1 0 0 0 0 0;0 0 0 1 0 0 0 0;0 0 0 0 1 0 0 0; 0 0 0 0 0 1 0 0;0 0 0 0 0 0 1 0;0 0 0 0 0 0 0 1;1 1 0 0 0 0 0 0];
A = [ 1 0 0 0 0 0 0 0];
C =mod((A*M'),2) % multiplication by module 2
i want to repeat the C =mod((A*M'),2) many times until one of the results repeated. how to do this?
1 Commento
Roger Stafford
il 11 Nov 2014
When you say "repeated" do you mean successive vectors, C, are the same, or do you mean that one of the C's along the line is the same as some earlier C so that a cycle is created? The first meaning is easier to accomplish and the second sounds more likely.
Risposta accettata
Guillaume
il 11 Nov 2014
I assume you mean you want to repeat
A = mod(A*M', 2);
Otherwise, if A and M never changes C = mod(A*M', 2) will always give the same result!
Assuming you want to stop when any of the A that's been generated reappers again, build a matrix of A (concatenate rows) and use ismember(..., 'rows') to find if your new A is present in the matrix:
M =[0 1 0 0 0 0 0 0;0 0 1 0 0 0 0 0;0 0 0 1 0 0 0 0;0 0 0 0 1 0 0 0; 0 0 0 0 0 1 0 0;0 0 0 0 0 0 1 0;0 0 0 0 0 0 0 1;1 1 0 0 0 0 0 0];
A = [ 1 0 0 0 0 0 0 0];
AA = A;
A = mod(A*M', 2)
while ~any(ismember(A, AA, 'rows'))
AA = [AA; A];
A = mod(A*M', 2);
end
6 Commenti
Guillaume
il 12 Nov 2014
No. Try to understand what it does.
You have to replace the original
while ~any(ismember(A, AA, 'rows'))
by the four lines I've written, in the same order (well, you can swap the first two).
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Elementary Math 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!