[問題] 請問如何產生一個step function ?已回收

看板MATLAB作者 (辣辣)時間16年前 (2009/06/07 23:15), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/2 (看更多)
請教網路上的各位高手 我想要做出一個STEP FUNCTION 它會是在一個方程式內 如下 w_left=[exp(-((xi-m1)^2)/(2*d1^2)))*u(-(xi-m1))+u(xi-m1)]; u就是我想要的step function 我本來想利用副程式的方式 把u(-)與u()分成兩個 一個在小於0的時候回傳1另一個在大於0的時候回傳1 如下 function r = u1( fun_in ) if fun_in < 0 r=1; else r=0 end 可是好像不能用~~可能是我的想法一直用c的想法 不知道有大大可以跟我講一下訣竅嗎? 感激不盡 我PO上我完整的CODE好了 如下 主程式 clear all; clc; %m1=input('m1=') m1=0; %d1=input('delta1=') d1=0.2; %m2=input('m2=') m2=0; %d2=input('delta2=') d2=0.2; xi=-1:0.01:1; %u1(fun_in)當fun<0 回傳1 %u2(fun_in)當fun<0 回傳0 %u1()u2()為模擬步階函數之結果 ret_u11=u1(xi-m1); %plot(ret_u11) ret_u12=u2(xi-m1); %plot(ret_u12) w_left=(exp(-((xi-m1).^2)/(2*d1^2)).*ret_u11)+ret_u12; ret_u21=u1(xi-m2); ret_u22=u2(xi-m2); w_right=(exp(-((xi-m2).^2)/(2*d2^2)).*ret_u22)+ret_u21; ua=w_left.*w_right; plot(ua) u1 function r = u1( fun_in ) if fun_in < 0 r=1; else r=0; end u2 function r = u2( fun_in ) if fun_in > 0 r=1; else r=0; end 看起來他只有執行一次,我該怎樣讓他執行Xi有變化就會直接一直做 我分開來用也不行 拜託高手了 感激不盡 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.124.33.185

06/07 23:20, , 1F
有內建的sign
06/07 23:20, 1F

06/07 23:21, , 2F
heaviside就是你要的
06/07 23:21, 2F

06/08 01:38, , 3F
你式子裡是u 副程式是u1 兩個要一樣
06/08 01:38, 3F

06/08 01:43, , 4F
a=hardlim(t) ,t>=0 a=1,t<0 a=0, 符合你程式的需求
06/08 01:43, 4F
※ 編輯: ezekielluc 來自: 60.248.201.66 (06/08 10:14)
文章代碼(AID): #1AAzciGc (MATLAB)
文章代碼(AID): #1AAzciGc (MATLAB)