MATLAB Answers

0

Using a loop and counter for parametric equations

Asked by Landon Sugar on 18 Oct 2019
Latest activity Commented on by darova
on 21 Oct 2019 at 13:52
I'm very new to MATLAB so I am aware this code is probably atrocious. Please speak clearly!
I have an equation for calculating wave power density (E) in an ocean wave. It has three variables (H, T, and h) with different numerical ranges. (i.e. H ranges from 1 to 3, T ranges from 5 to 22, and h ranges from 5 to 6.) I want to create a FOR loop where MATLAB will plug in different numbers, with increments of 1, essentially being a parametric study. I can't find any clear videos or links on nested for loops with counters.
Ex:
Screen Shot 2019-10-18 at 9.42.42 AM.png

  0 Comments

Sign in to comment.

2 Answers

Answer by Sulaymon Eshkabilov on 18 Oct 2019
 Accepted Answer

Hi
Here is the solution of your task:
function E = realED(H, T, h)
%
%
%
rho=1030;
g=9.81;
%
%
L = zeros(numel(H), numel(T), numel(h));
k=L;
Cg=L;
E=L;
for ii=1:numel(H)
for m=1:numel(T)
for jj = 1:numel(h)
L(ii, m, jj) = (g*T(m)^2)/(2*pi*tan(h(jj)))*((4*pi)^2)*h(jj)/(g*T(m)^2)^3;
k(ii, m, jj)=2*pi/L(ii, m, jj);
Cg(ii, m, jj) = .5*((1+((2*k(ii, m, jj)*h(jj))/sin(h(jj))))*2*k(ii,m,jj)*h(jj))*L(ii, m, jj)/T(m);
E(ii, m, jj) = ((rho*g)/16)*(H(ii)^2)*Cg(ii, m, jj);
end
end
end
Good luck

  2 Comments

Memory allocation is already done for : L, k, Cg and E.
darova
on 21 Oct 2019 at 13:52
Yes, Sir!

Sign in to comment.


Answer by darova
on 18 Oct 2019

Preallocate array before loop
E = zeros(3-1+1,22-5+1,6-5+1);
for
%% E(H,T,h) = ...
end

  2 Comments

Thank you for your response!
what does the "3-1+1, 22-5+1, 6-5+1" part mean?
Those values are dimensions of 3D matrix. You will have 3 x 18 x 2 matrix. You want to visualize it?

Sign in to comment.