이 질문을 팔로우합니다.
- 팔로우하는 게시물 피드에서 업데이트를 확인할 수 있습니다.
- 정보 수신 기본 설정에 따라 이메일을 받을 수 있습니다.
if loop inside matlab function ----- i dont understand why this is not working
댓글 수: 11
The above rewrite works but I'd suggest
function y =fcn(u) y = u>0.7 & u<0.71; end
NB: If the argument u is not a scalar then the result will probably never be true; the result of an logical operation on a vector or array is also a vector or array of the same size and if is true IFF all elements of the vector are true
The ML editor probably flagged (with the orange line in RH margin) about the use of && for scalar as well...
답변 (1개)
Here is a event based solution to latch the value. The solution use if block and if action subsystem to latch the output once a certain condition is met. I used the clock as the input and the if condition becomes true between 20 to 21 seconds but output remains 1 after 20 seconds.
![](/matlabcentral/answers/uploaded_files/114252/latching.png)
The Simulink model file is also attached.
댓글 수: 13
I wondered when I saw "latch" in the second comment if that might not have been OP's purpose.
"... is not possible with MATLAB function block."
While I'd never recommend for the purpose with Simulink, it is possible with Matlab by using persistent to retain state between function calls
Hi dpb,
i want to be sure that i understood correct. The following code would work for this purpose and also would latch the value for y between the several functions calls, but is not recommended for use in Simulink?
function y = myfun(u) persistent value if(u>0.7) && (u<0.71) value=1; end y = value; end
Is there any reason why it should not be used this way?
best regards
Stephan
That won't latch if that's the purpose, no...as coded it will still return the value based only on the input value of u; the persistent value isn't used to determine whether or not to reset its value.
CLARIFICATION It will latch if the condition on u is satisfied, that is true; it will fail on first call for lack of value being assigned; that it has been declared persistent will keep from generating an undefined error but the function will return empty which likely will cause an error in the calling routine expecting a value.
The function would also have to be called to initialize the persistent variable first before use.
If one had need for such a function in Matlab base product that would be the way to implement it; in Simulink there's better ways given its manner of operation.
I was simply pointing out that there is (and doc says before R2006 altho I didn't think it had been that long) the facility in ML.
One (unoptimized) implementation...
function y = myfun(u,init) persistent value if nargin==2 value=0; y=value; return end if value==1 y=value; return end if u>0.7 & u<0.71 value=1; y=value; end end
참고 항목
카테고리
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!오류 발생
페이지가 변경되었기 때문에 동작을 완료할 수 없습니다. 업데이트된 상태를 보려면 페이지를 다시 불러오십시오.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
아시아 태평양
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)