Filter löschen
Filter löschen

How to subtract subtract two elements in the same matrix and then do that again and then divide these values by each other?

3 Ansichten (letzte 30 Tage)
I want to make a for loop where I subtract two elements in the same matrix and then do that process again for another matrix, and then divide these two values together. Here is the code I have as an example of doing it once where the variable is pgf but I want to do it for the whole matrices using a for loop or something else:
x1 = [1e6:20000:5e6];
D_c = 5000;% in m
D1 = [0:25:5000];
x_o = 1e6; % in m
x_2 = [x_o:20000:5e6];
L = 4e6; % in m
Tw_o = 300; % in K
LR_w = 0.004; % in K/m
LR_c = -0.007; % in K/m
pz_0 = 1000; % in mb
D_1 = D_c.*(sin((pi/L).*(x1-x_o)));
T_c2 = Tw_o-(((LR_w-LR_c).*D_1)-((LR_c.*D1)));
g = 9.81;
Rd = 287;
p1 = pz_0*(((((T_c2)-(LR_c.*D1))./(T_c2))).^((g)/(Rd*LR_c)));
dens = 1.293;
f = (2)*(7.292e-5)*sind(45);
f2 = (1)/(dens*(2)*(7.292e-5)*sind(45));
pgf = (p1(1:1)-p1(1:2))/((x1(1:2)-x1(1:1))); % example of what I am trying to do for all elements
  2 Kommentare
Walter Roberson
Walter Roberson am 10 Okt. 2023
Are you sure??
p1(1:2) is a vector, and x1(1:2) is a vector, so you have two vectors with / as the operation between them. The / operator is mrdivide, / which is approximately A/B ==> A * pinv(B) where * is the matrix multiplication operator.
The / operator is not element-by-element division. which is the ./ operator
the cyclist
the cyclist am 10 Okt. 2023
@Matthew, did you perhaps mean
p1(1,1)-p1(1,2)
etc, which would be the difference between two matrix elements, as you describe?
Still, it is not perfectly clear to me what you intend. Maybe you could tell us what the result would be for two small matrices, like
p1 = [2 3 5;
7 11 13];
x1 = [17 23 29;
31 37 41];
I expect you will not even need a loop, because MATLAB is designed to do many operations on whole matrices.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Ayush Modi
Ayush Modi am 10 Okt. 2023
Hi Matthew,
I understand you would like to subtract the adjacent values in the "p1" and "x1" matrices. And then, you would like to do element wise division for the two resultant matrices.
Here is an example showing how you can implement the same using "diff" function:
resSub1 = diff(p1, 1, 2); % This does secondElement - firstElement, thirdElement - secondElement and so on..
resSub2 = diff(x1, 1, 2);
result = resSub1./resSub2; % Element wise division of resSub1 and resSub2
You can refer to the following MathWorks documentation for more information about "diff" function:
Hope this helps!

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by