Info
This question is closed. Reopen it to edit or answer.
loop in loop and plotting two data in a a same figure and then plotting frequency vs number of spikes
2 views (last 30 days)
Show older comments
hello all,
i am working on calcium inputs in a simbiology project file. i have a function of spikes as input for the model which has three varying variables: start time, frequency and number of spikes.
i managed to write a program for the different frequencies predicitng the output functions and same i did for max spikes seperately. now i wanted ro include both in one matlab code. and produce a graph like one attached.
this is my code:
----------------------------------------------------------------------------------------------------------------------------------
function Bito_like_prediction_freq_number()
proj=sbioloadproject('CaMKII_v3');
modelobj=proj.m1;
%startTime is time for relaxation
startTime=30;
stopTime=40;
times=0:0.01:stopTime;
frequencies=[0 2 3.3 5 6.7 10 20];
maxSpikeNum= [10 20 30];
max_step=0.005;
output_species=[6 12 33];
configsetObj = getconfigset(modelobj);
set(configsetObj, 'StopTime', times(end));
set(configsetObj, 'SolverType','ode15s');
set(configsetObj.SolverOptions, 'OutputTimes', times);
set(configsetObj.SolverOptions, 'MaxStep', max_step);
set(configsetObj.SolverOptions, 'AbsoluteTolerance', 1.0e-8);
set(configsetObj.SolverOptions, 'RelativeTolerance', 1.0e-6);
set(configsetObj.RuntimeOptions, 'StatesToLog', 'all');
% %set all initial amounts to 0
for ii=1:size(modelobj.species,1),
modelobj.species(ii).InitialAmount=0;
end
for ii=1:size(modelobj.Rules,1),
modelobj.Rules(ii).Active=1;
end
modelobj.species(1).InitialAmount=10000;
modelobj.Rules(49).Active=1;%Ca spiketrain
modelobj.Parameters(104).Value=startTime;
for i=1:length(frequencies)
if frequencies(i)>0
modelobj.Parameters(100).Value=frequencies(i);
for j=1:length(maxSpikeNum)
modelobj.Rules(49).Active=1;
modelobj.Parameters(107).Value=maxSpikeNum(j);
[t,y,names]=sbiosimulate(modelobj);
end
elseif frequencies(i)==0
for j=1:length(maxSpikeNum)
modelobj.Rules(49).Active=0;
modelobj.Parameters(107).Value=maxSpikeNum(j);
end
[t,y,names]=sbiosimulate(modelobj);
end
figure(1)
subplot(3,4,i)
plot(t(3000:end),y(3000:end,output_species))
legend(names{output_species(1)},names{output_species(2)}, names{output_species(3)})
title(num2str(frequencies(i)));
axis([30 35 0 7000])
figure(2)
subplot(1,3,j)
plot(t(3000:end),y(3000:end,output_species))
legend(names{output_species(1)},names{output_species(2)}, names{output_species(3)})
title(num2str(maxSpikeNum(j)));
axis([30 35 0 7000])
end
------------------------------------------------------------------------------------------------------------------------------
i know i am using a very wrong subplot it worked in individual cases but not for the kind of plot i wamt.
As, i understand i need to have each simulation in sim file saved with running simulation with each frequency for different spike numbers.
i am in kind of fix how to achieve that.
any help will be great.
thanks
Parul
2 Comments
Sargondjani
on 5 Feb 2019
Maybe you want to use:
f1=figure;
figure(f1)
and use 'hold all'
so you can switch back to a figure (f1), and add an extra graph.
KALYAN ACHARJYA
on 5 Feb 2019
Edited: KALYAN ACHARJYA
on 5 Feb 2019
Edit the formating of code use Ctrl+E
Answers (0)
This question is closed.
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!