Replacing the variable that are generated through loops ?

2 Ansichten (letzte 30 Tage)
P K
P K am 20 Dez. 2018
Bearbeitet: Walter Roberson am 20 Dez. 2018
I have a code that generate the equation through loops :
Eqn(1)=4*K_T*P(1, 0)*P(4, 3) - 4*K_L*P(1, 0)*P(5, 4) + 4*K_T*P(2, 1)*P(3, 2) - 4*K_T*P(1, 0)*P(5, 4)
Eqn(2)= 2*K_T*P(3, 2)^2 + 4*K_T*P(1, 0)*P(5, 4) + 4*K_T*P(2, 1)*P(4, 3)
Please Note - In P(i,j) - i and j are not specifying any MATRIX position. They are numbers which are generated through some equation.P(i,j) are variables. There are many such variables. Now I want to replace them with some other variables.
So, my question is - Is it possible that the variables get changed to my desired variables, which i would specify ?
like P(1,0)==C(1)
P(3,2)==C(4)
thanks !!
  3 Kommentare
Walter Roberson
Walter Roberson am 20 Dez. 2018
To confirm, P(1,0) designates not P indexed at row 1 column 0, but rather a distinquished scalar variable P_1_0 and P(5,4) is a distinguished scalar variable P_5_4 rather than P indexed at row 5 column 4?

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Walter Roberson
Walter Roberson am 20 Dez. 2018
B = 1;
P = sym('P', [B+5 B+4]);
Eqn(1) = 4*K_T*P(B+1, B+0)*P(B+4, B+3) - 4*K_L*P(B+1, B+0)*P(B+5, B+4) + 4*K_T*P(B+2, B+1)*P(B+3, B+2) - 4*K_T*P(B+1, B+0)*P(B+5, B+4);
Eqn(2) = 2*K_T*P(B+3, B+2)^2 + 4*K_T*P(B+1, B+0)*P(B+5, B+4) + 4*K_T*P(B+2, B+1)*P(B+4, B+3);
subs(Eqn, [P(B+1, B+0), P(B+3,B+2)], [C(1), C(4)])
  2 Kommentare
P K
P K am 20 Dez. 2018
Walter
Can you explain it ?
In the Eqn(1) - your code has P(B+1, B+0), which would result P(2,1) as output instead of P(1,0).
Walter Roberson
Walter Roberson am 20 Dez. 2018
Bearbeitet: Walter Roberson am 20 Dez. 2018
It does not replace P(2,1) as output: it adjusts indexing bases from 0 to 1.
It would, however, replace P(1,0) with P_2_1 because P = sym('P', [B+5 B+4]); is one based. You can get around that and have P10 appear instead if you use
temp_nn = sym('P%d%d', [5, 4]);
temp_0n = sym({'P00', 'P01', 'P02', 'P03', 'P04'});
temp_n0 = sym({'P10'; 'P20'; 'P30'; 'P40'; 'P50'});
P = [temp_0n; [temp_n0, temp_nn]];

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Mathematics finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by