function not using all values
조회 수: 1 (최근 30일)
이전 댓글 표시
I was creating this function for a launch control's ignition cut and when running it, the function avoid all the conditions where v appears. I am not very familiar to this kind of conditioning as I recently learnt it and it is the first time I am using it with two inputs and one output. Code and variables used can be seen below. Initially when I created the code I tried using if statements, but I soon realised when using that all values of the vectors have to be below the condition otherwise the statement jumps straight to the "else" part.
function injcut = injcut_fun (v,rpm)
global LCREV_MAX LCSPEED_MAX
injcut = rpm;
injcut (:) = 1; % 100% torque allowed
injcut (rpm > 11100) = 0; % 0% torque allowed
injcut (rpm > 10900) = 0.5; % 50% torque allowed
injcut (v <= LCSPEED_MAX/3.6 & rpm > LCREV_MAX+300) = 0; % 0% torque allowed
injcut (v <= LCSPEED_MAX/3.6 & rpm > LCREV_MAX+200) = 0.25; % 25% torque allowed
injcut (v <= LCSPEED_MAX/3.6 & rpm > LCREV_MAX+100) = 0.5; % 50% torque allowed
injcut (v <= LCSPEED_MAX/3.6 & rpm > LCREV_MAX) = 0.75; % 75% torque allowed
댓글 수: 0
채택된 답변
Jan
2017년 4월 18일
The order matters:
injcut (v <= LCSPEED_MAX/3.6 & rpm > LCREV_MAX) = 0.75; % 75% torque allowed
injcut (v <= LCSPEED_MAX/3.6 & rpm > LCREV_MAX+100) = 0.5; % 50% torque allowed
injcut (v <= LCSPEED_MAX/3.6 & rpm > LCREV_MAX+200) = 0.25; % 25% torque allowed
injcut (v <= LCSPEED_MAX/3.6 & rpm > LCREV_MAX+300) = 0; % 0% torque allowed
In the opposite order, the value set by rpm > LCREV_MAX+300 is overwritten by rpm > LCREV_MAX.
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Engines & Motors에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!