function not using all values

조회 수: 1 (최근 30일)
Alexandru Bortea
Alexandru Bortea 2017년 4월 18일
답변: Jan 2017년 4월 18일
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

채택된 답변

Jan
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개)

카테고리

Help CenterFile Exchange에서 Wind Power에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by