How to change matrix values in matlab without loop

3 vues (au cours des 30 derniers jours)
Idan Cohen
Idan Cohen le 19 Nov 2016
Commenté : Idan Cohen le 19 Nov 2016
Hi,
Assuming that I have the matrix A:
A =
0.6638 0.9134 0.2785
0.9058 0.3999 0.5469
0.1270 0.0975 0.9168
I want to change the matrix value by the following condition without loops:
A(i,j) = (a)^2 if i=j and i=n+1-j
2*a otherwise
I read about sub2ind, It helped mw with the main diagonal but not the second diagonal (for i=n-j+1).
Any one can help me please?
Thanks in advance :)
  2 commentaires
KSSV
KSSV le 19 Nov 2016
What is n? Does a stand for aij?
Idan Cohen
Idan Cohen le 19 Nov 2016
In my example n=3, but I need for n that stands for the matrix size

Connectez-vous pour commenter.

Réponses (1)

Roger Stafford
Roger Stafford le 19 Nov 2016
Assume A is n by n in size.
A((1:n)+n*(0:n-1)) = a^2;
A(n*(1:n)-(0:n-1)) = 2*a
Note: If n is odd, the two diagonals meet at the center. Depending on which rule is to have preference, you can do the above or reverse the order:
A(n*(1:n)-(0:n-1)) = 2*a
A((1:n)+n*(0:n-1)) = a^2;

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by