作者:
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;
如果兩邊的運算元都已經是binary,那logical and跟addition是一樣的運算更正,不是addition,應該是multiplication
作者:
sunev (Veritas)
2017-08-09 14:03:00改用 &
這樣寫,不就只剩下第三行的y才有效? 前兩行會被蓋過.
作者:
sunev (Veritas)
2017-08-09 16:56:00樓上精闢,所以要改成 y(1<x&x<=5)=exp(7*x(1<x&x<5).^2);
在這之前應該要先宣告y=zeros(size(x))之類的 不然size好像會出問題
作者:
sunev (Veritas)
2017-08-10 08:38:00回樓上,剛試了一下,matlab會自動把y擴充到適當的size但如果x<5的case不存在,y可能就不會和x一樣大,所以還是先宣告大小比較好沒錯。回原PO,這樣會多算一些東西,不過如果不是效能瓶頸就沒差
等等 仔細看看原PO你這很怪吧 怎麼後面有個+y? 5<x的時後後面的+y是要+(1 < x & x <= 5)的時候的y嗎?size會不符合吧?
作者:
sunev (Veritas)
2017-08-12 10:38:00所有的東西size都和x一樣大,包括x<5