How to change matrix values in matlab without loop

5 Ansichten (letzte 30 Tage)
Idan Cohen
Idan Cohen am 19 Nov. 2016
Kommentiert: Idan Cohen am 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 Kommentare
KSSV
KSSV am 19 Nov. 2016
What is n? Does a stand for aij?
Idan Cohen
Idan Cohen am 19 Nov. 2016
In my example n=3, but I need for n that stands for the matrix size

Melden Sie sich an, um zu kommentieren.

Antworten (1)

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

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by