[問題] 矩陣判斷式 問題

作者: gragon (丞袁)   2017-08-09 13:40:50
假如我有一個function
funcion [output] = calculate(x)
y = (x <= 1) .* exp(3*x);
y = (1 < x && x <= 5 ) .* exp(7*x.^2);
y = (5 < x) .* exp(3 * x.^2 + 0.3);
x是讀一個矩陣進來
但在第二個判斷式 && 左右只能是scalar value 不能是矩陣
請問如果想在第二個判斷式 可以判斷矩陣
該怎麼做才好 謝謝大家
後來改成這樣就可以了
funcion [output] = calculate(x)
y = (x <= 1) .* exp(3*x);
y = (1 < x & x <= 5 ) .* exp(7*x.^2) + y;
y = (5 < x) .* exp(3 * x.^2 + 0.3) + y;
作者: tn00364361 (小氵斿)   2017-08-09 13:48:00
如果兩邊的運算元都已經是binary,那logical and跟addition是一樣的運算更正,不是addition,應該是multiplication
作者: sunev (Veritas)   2017-08-09 14:03:00
改用 &
作者: YoursEver (豬是妳)   2017-08-09 15:24:00
這樣寫,不就只剩下第三行的y才有效? 前兩行會被蓋過.
作者: sunev (Veritas)   2017-08-09 16:56:00
樓上精闢,所以要改成 y(1<x&x<=5)=exp(7*x(1<x&x<5).^2);
作者: profyang (prof)   2017-08-09 17:43:00
在這之前應該要先宣告y=zeros(size(x))之類的 不然size好像會出問題
作者: sunev (Veritas)   2017-08-10 08:38:00
回樓上,剛試了一下,matlab會自動把y擴充到適當的size但如果x<5的case不存在,y可能就不會和x一樣大,所以還是先宣告大小比較好沒錯。回原PO,這樣會多算一些東西,不過如果不是效能瓶頸就沒差
作者: profyang (prof)   2017-08-11 14:11:00
等等 仔細看看原PO你這很怪吧 怎麼後面有個+y? 5<x的時後後面的+y是要+(1 < x & x <= 5)的時候的y嗎?size會不符合吧?
作者: sunev (Veritas)   2017-08-12 10:38:00
所有的東西size都和x一樣大,包括x<5

Links booklink

Contact Us: admin [ a t ] ucptt.com