Info
์ด ์ง๋ฌธ์ ๋ง๊ฐ๋์์ต๋๋ค. ํธ์งํ๊ฑฐ๋ ๋ต๋ณ์ ์ฌ๋ฆฌ๋ ค๋ฉด ์ง๋ฌธ์ ๋ค์ ์ฌ์ญ์์ค.
if Loop to print values into a variable
์กฐํ ์: 1 (์ต๊ทผ 30์ผ)
์ด์ ๋๊ธ ํ์
How do i run though the loop and print the valid numbers in the 'value' variable?
The condition is to determine the ๐-value cases that achieve ๐ต โฅ 10 at ๐ก = 5.
colourmap = [228 26 28; 55 126 184; 77 175 74; ...
152 78 163; 255 127 0]/255;
%variables
r = [0.05 0.1 0.5 1 10];
t = (0:0.01:100);
k = 15
B0 = 1;
%
for i = 1: length(r)
dBdt =@(t,B) (r(i)).*B.*(1-(B./k));
[t,B] = ode45(dBdt,t,B0);
figure(6);
loglog(t,B,'color',colourmap(i,:))
grid on;
hold on;
if B>= 10
value = []
end
end
xlabel('Time');
ylabel('Bacteria growth');
title('B against t');
legend(num2str(r','r = %5.2f'),'location','northwest');
๋๊ธ ์: 0
๋ต๋ณ (1๊ฐ)
Star Strider
2020๋
6์ 4์ผ
Change the loop slightly, using the two new commented lines:
for i = 1: length(r)
dBdt =@(t,B) (r(i)).*B.*(1-(B./k));
[t,B] = ode45(dBdt,t,B0);
figure(6);
loglog(t,B,'color',colourmap(i,:))
grid on;
hold on;
idx = B>= 10; % Logic Index Vector
value{i,:} = [t(idx), B(idx)]; % Save To Cell Array
end
That ran without error whan I tested it just now.
๋๊ธ ์: 2
Star Strider
2020๋
6์ 4์ผ
My pleasure.
I am not certain that I understand what you want to do.
Try this:
for i = 1: length(r)
dBdt =@(t,B) (r(i)).*B.*(1-(B./k));
[t,B] = ode45(dBdt,t,B0);
figure(6);
loglog(t,B,'color',colourmap(i,:))
grid on;
hold on;
Bmtx(:,i) = B; % Save To Matrix
end
t5idx = find(t >= 5, 1, 'first'); % Time Index
colidx = find(Bmtx(t5idx,:) >= 10, 1, 'first'); % Column Index
value = Bmtx(t5idx,colidx) % โvalueโ
It retuns the column of โBmtxโ that has the first instance that satisfies the conditions, and the associated โvalueโ.
์ฐธ๊ณ ํญ๋ชฉ
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!