How to change matrix values in matlab without loop

3 views (last 30 days)
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 Comments
Idan Cohen
Idan Cohen on 19 Nov 2016
In my example n=3, but I need for n that stands for the matrix size

Sign in to comment.

Answers (1)

Roger Stafford
Roger Stafford on 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;

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!