Producing arrays to plot (MATLAB)

  • Context: MATLAB 
  • Thread starter Thread starter Liffner
  • Start date Start date
  • Tags Tags
    Arrays Matlab Plot
Click For Summary
SUMMARY

The discussion focuses on generating arrays for plotting calculations performed within a while loop in MATLAB. The user provided specific parameters including G0, v, M, elim, Gamma, xi, Pa, h1, h2, n, d0, and m, and sought assistance in modifying their code to produce arrays for p, q, and eq values instead of single numbers. The solution involves using MATLAB's array concatenation or indexing techniques to store multiple results for each analysis iteration. Reference to MATLAB's documentation on resizing and reshaping matrices is also suggested for further guidance.

PREREQUISITES
  • Familiarity with MATLAB programming and syntax
  • Understanding of while loops and conditional statements in MATLAB
  • Knowledge of array manipulation techniques in MATLAB
  • Basic understanding of mathematical modeling and analysis
NEXT STEPS
  • Learn MATLAB array concatenation techniques for storing multiple results
  • Explore MATLAB indexing methods to access and manipulate array elements
  • Review MATLAB documentation on matrix resizing and reshaping
  • Investigate plotting functions in MATLAB to visualize array data effectively
USEFUL FOR

MATLAB users, data analysts, and engineers involved in mathematical modeling and data visualization who need to generate and plot multiple data points from iterative calculations.

Liffner
Messages
2
Reaction score
0
Hi everyone, my code is a little rusty and a work in progress but I was wondering how I would go about producing arrays for the calculations performed in the while loop for the analyses so they can be plotted.

I have the following parameter input;
G0 = 50;
v = 0.25;
M = 1.305;
elim = 0.92;
Gamma = 0.0375;
xi = 0.6;
Pa = 101;
h1 = 4.45;
h2 = 4.2;
n = 1;
d0 = 1;
m = 0.5;

p01 = input('Give value for p0(1) =')
q01 = input('Give value for qo(1) =')
e01 = input('Give value for e0(1) =')
p02 = input('Give value for p0(2) =')
q02 = input('Give value for qo(2) =')
e02 = input('Give value for e0(2) =')
p03 = input('Give value for p0(3) =')
q03 = input('Give value for qo(3) =')
e03 = input('Give value for e0(3) =')

eq = deq0*100;
while eq < 40
eq = eq + deq0*100;
% For the first analysis
Psi1 = e01-(elim-Gamma*(p01/Pa)^xi);
eta1 = q01/p01;
G1 = G0*(((2.97-e01)^2)/(1+e01))*(sqrt(p01*Pa));
K1 = G1*((2*(1+v))/(3*(1-2*v)));
d1 = d0*(exp(m*Psi1)-(eta1/M));
kp1 = (h1-h2*e01)*G1*((M/eta1)-exp(Psi1*n));
dq1 = (-kp1*deq0/eta1*(d1*eta1/kp1-1/K1))/(d1/kp1-(d1*eta1/kp1-1/K1)*kp1/eta1*(1/(3*G1)+1/kp1));
dp1 = kp1/eta1*((1/(3*G1)+1/kp1)*dq1-deq0);
p01 = p01 + dp1;
q01 = q01 + dq1;
% For the second analysis
Psi2 = e02-(elim-Gamma*(p02/Pa)^xi);
eta2 = q02/p02;
G2 = G0*(((2.97-e02)^2)/(1+e02))*(sqrt(p02*Pa));
K2 = G2*((2*(1+v))/(3*(1-2*v)));
d2 = d0*(exp(m*Psi2)-(eta2/M));
kp2 = (h1-h2*e02)*G2*((M/eta2)-exp(Psi2*n));
dq2 = (-kp2*deq0/eta2*(d2*eta2/kp2-1/K2))/(d2/kp2-(d2*eta2/kp2-1/K2)*kp2/eta2*(1/(3*G2)+1/kp2));
dp2 = kp2/eta2*((1/(3*G2)+1/kp2)*dq2-deq0);
p02 = p02 + dp2;
q02 = q02 + dq2;
% For the third analysis
Psi3 = e03-(elim-Gamma*(p03/Pa)^xi);
eta3 = q03/p03;
G3 = G0*(((2.97-e03)^2)/(1+e03))*(sqrt(p03*Pa));
K3 = G3*((2*(1+v))/(3*(1-2*v)));
d3 = d0*(exp(m*Psi3)-(eta3/M));
kp3 = (h1-h2*e03)*G3*((M/eta3)-exp(Psi3*n));
dq3 = (-kp3*deq0/eta3*(d3*eta3/kp3-1/K3))/(d3/kp3-(d3*eta3/kp3-1/K3)*kp3/eta3*(1/(3*G3)+1/kp3));
dp3 = kp3/eta3*((1/(3*G3)+1/kp3)*dq3-deq0);
p03 = p03 + dp3;
q03 = q03 + dq3;
end

Essentially, I would like to plot the corresponding p, q and eq for each analysis but with the way it is currently set out, it is only producing 1 number for each.
Any help will be appreciated. I haven't used the program in a few years so forgive my poor layout.
 
Physics news on Phys.org
Thanks, will give that a try.