Using tic toc to change a value every 30 seconds?

I am writing a code that creates a bar graph using data created in a matrix. Every 30 seconds, I want to multiply the value of one of the bar graphs by a value. The distortion will increase by 0.02 every time. For example, in the first 30 seconds, the bar graph will show the bar at a normal value (100%), in the second 30 seconds, the bar graph will show the bar at its value times 1.02 (102%), in the third 30 seconds, the bar graph will show the bar at its value times 1.04 (104%). This increases all the way up to 114%, then the distortion decreases from 114% to 112% to 110% etc. back to zero. I have written the code that is capable of doing this and have provided it below (this is all included in a while loop that pulls the data for the bar graphs; "tic" is written before the while loop begins). However, at the beginning of the code and at the end of the code (after it reaches 100%), I want to include a part where the bar graph is at its original value for 2 straight minutes (100% or an alpha value of 0 for 120 seconds). How would I do this if my alpha value is set to increase by 0.02 every time?
if toc > interval
if alpha <= 1
distortion = abs(distortion);
elseif alpha >= 1.14
distortion = -abs(distortion);
end
alpha = alpha + distortion;
tic;
end
array_size = size(M);
M(array_size(1)+1,:) = [b e Rsteplength Lsteplength];
if array_size(1) <= row_count
pause(sampling_time);
continue;
else
row_count = array_size(1);
end
current_left = M(row_count,3);
current_right = M(row_count,4);
if current_left > last_left
left_bar = current_left*alpha;
elseif current_left < current_right
left_bar = 0;
end
if current_right > last_right
right_bar = current_right*alpha;
elseif current_right < current_left
right_bar = 0;
end
lstep_length = [left_bar, right_bar];
bargraph = bar(lstep_length);
ylim([0,1000])
last_left = current_left;
last_right = current_right;
pause(sampling_time);
end

댓글 수: 2

jgg
jgg 2016년 3월 28일
Wouldn't a timer be a better way to do this?
Geoff Hayes
Geoff Hayes 2016년 3월 28일
편집: Geoff Hayes 2016년 3월 28일
jgg has it right. A timer would be a better way to do this. You could then delay the start of the timer by two minutes (when at 100%).

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

답변 (0개)

카테고리

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

질문:

2016년 3월 28일

편집:

2016년 3월 28일

Community Treasure Hunt

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

Start Hunting!

Translated by