Azzera filtri
Azzera filtri

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

3 visualizzazioni (ultimi 30 giorni)
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 Commenti
Walter Roberson
Walter Roberson il 10 Ott 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 il 10 Ott 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.

Accedi per commentare.

Risposte (1)

Ayush Modi
Ayush Modi il 10 Ott 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!

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by