l=input('l=');
for t=0:100
if t>2
g=((3/(309*0.0014))*((((0.0000126*(t-2))/l)*80.4)-(l/6)));
elseif t>80
g=l-((80.4/309)*exp(((((-3*0.0000126)/(0.0014*l))*(t-80)))));
else
g=0;
end
disp (g);
end
t=0:100;
plot (t,g)
can someone explain how to plot graph using this coding because the don't get the graph.

 채택된 답변

Bhaskar R
Bhaskar R 2020년 1월 27일

0 개 추천

l=input('l=');
g = zeros(1, length(0:100));% initialize g with 0's of length t
c = 1; % counter variable
for t=0:100
if t>2
g(c)=((3/(309*0.0014))*((((0.0000126*(t-2))/l)*80.4)-(l/6)));
elseif t>80
g(c)=l-((80.4/309)*exp(((((-3*0.0000126)/(0.0014*l))*(t-80)))));
else
g(c)=0;
end
c = c+1; % increment counter variable
disp (g);
end
t=0:100;
plot (t,g)

댓글 수: 7

liyana nadirah
liyana nadirah 2020년 1월 27일
i get the graph but the data output is repeated. why?
Bhaskar R
Bhaskar R 2020년 1월 27일
Your data is according to your statements and you have used disp(g) to print g for each iteration that is why data output is repeated.
liyana nadirah
liyana nadirah 2020년 1월 28일
so should i delete the comand disp g
Walter Roberson
Walter Roberson 2020년 1월 28일
Yes. Or use logical indexing like I posted
for l=0.0002:0.001
g = zeros(1, length(0:100));% initialize g with 0's of length t
c = 1;% counter variable
for t=0:100
if (t(d)>2) && (t(d)<=80)
g(c)=((3/(309*0.0014))*((((0.0000126*(t-2))/l)*80.4)-(l/6)));
elseif t(d)>80
g(c)=l-((80.4/309)*exp(((((-3*0.0000126)/(0.0014*l))*(t-80)))));
else
g(c)=0;
end
c = c+1;% increment counter variable
end
end
disp (g)
t=0:100;
plot(t,g)
xlabel('Day')
ylabel('Cumulative percentage of nutrient release,%')
how about this can you help me fix my nested for loop. and how can i have all the graph for all 'l' in one graph
for t=0:100
t is a scalar
if (t(d)>2) && (t(d)<=80)
d is undefined. If d does not happen to be 1, then because t is a scalar, t(d) would be out of range.
for l=0.0002:0.001
every iteration of that loop, every different value of l, you are ovewriting all of g. The result would be the same as if you had only done the last of them, 0.0002 .
Notice by the way that because the default increment is 1, your code
for l=0.0002:0.001
is the same as
for l=0.0002 : 1 : 0.001
so 0.0002 would be used, then 0.0002+1 would be examined and found to be greater than 0.001 so the loop would stop.
liyana nadirah
liyana nadirah 2020년 1월 28일
emmm sorry idon't get it, so
first i should declare d as 1?

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Walter Roberson
Walter Roberson 2020년 1월 27일
편집: Walter Roberson 2020년 1월 27일

0 개 추천

l = input('l=');
t = 0:100;
g = zeros(size(t));
mask = t>2 & t <= 80
g(mask) = ((3/(309*0.0014))*((((0.0000126*(t(mask)-2))/l)*80.4)-(l/6)));
mask = t>80;
g(mask) = l-((80.4/309)*exp(((((-3*0.0000126)/(0.0014*l))*(t(mask)-80)))));
plot (t,g)

카테고리

도움말 센터File Exchange에서 App Building에 대해 자세히 알아보기

질문:

2020년 1월 27일

댓글:

2020년 1월 28일

Community Treasure Hunt

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

Start Hunting!

Translated by