Storing values from for-loop into a matrix
Show older comments
Hello, this is my first time using MATLAB. I only have very limited experience using VBA and that has been years since. I have a project for a class, and I can't seem to store my data in a matrix. I am calculating values in a for-loop but cannot increment through the matrix (namely, M_isentropic) since my increment is not an integer. I've found that multivariable for-loops are not an option in MATLAB. Any solution for this? Thanks
p.s. I originally found this code online and have been trying to tweak it to make it work for my incremental situation.
increment = length/0.01;
V = nan(1,increment);
T = nan(1,increment);
ARatio_Inc = nan(1,increment);
M_isentropic = nan(1,increment);
% Set up the solver
for i = 0.00001:0.01:length
length_Inc = 0 + i;
h_exit_Inc = 2.0*(tan(theta_t) * length_Inc+0.5*h_throat);
ARatio_Inc = h_exit_Inc / h_throat;
problem.objective = @(Msup) (1/Msup^2)*(((2+gm1*Msup^2)/gp1)^(gp1/gm1))-ARatio_Inc^2;
problem.solver = 'fzero';
problem.options = optimset(@fzero);
% Solve supersonic root
problem.x0 = [1+1e-6 50];
M_isentropic(1,i) = fzero(problem);
% Print solutions to command window
% fprintf('==== MATLAB SOLVER ====\n');
% fprintf('Msup: %3.4f\n',M_isentropic);
% fprintf('=======================\n\n');
% The calculated temperature at each M_isentropic.
T(1,i) = ((1 + M_isentropic(1,i)^2 * (gamma-1)/2)^-1)*T_stag;
% The calculated velocities at each M_isentropic
V(1,i) = M_isentropic(1,i)*sqrt(gamma*287.058*T(1,i));
end
disp(M_isentropic)
Accepted Answer
More Answers (0)
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!