看板 MATLAB 關於我們 聯絡資訊
假如我有一個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; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.160.132 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1502257252.A.5D8.html
tn00364361: 如果兩邊的運算元都已經是binary,那logical and跟add 08/09 13:48
tn00364361: ition是一樣的運算 08/09 13:48
tn00364361: 更正,不是addition,應該是multiplication 08/09 13:49
sunev: 改用 & 08/09 14:03
YoursEver: 這樣寫,不就只剩下第三行的y才有效? 前兩行會被蓋過. 08/09 15:24
sunev: 樓上精闢,所以要改成 y(1<x&x<=5)=exp(7*x(1<x&x<5).^2); 08/09 16:56
※ 編輯: gragon (140.117.160.132), 08/09/2017 17:24:23
profyang: 在這之前應該要先宣告y=zeros(size(x))之類的 不然size 08/09 17:43
profyang: 好像會出問題 08/09 17:43
sunev: 回樓上,剛試了一下,matlab會自動把y擴充到適當的size 08/10 08:38
sunev: 但如果x<5的case不存在,y可能就不會和x一樣大,所以還是 08/10 08:39
sunev: 先宣告大小比較好沒錯。 08/10 08:39
sunev: 回原PO,這樣會多算一些東西,不過如果不是效能瓶頸就沒差 08/10 08:40
profyang: 等等 仔細看看原PO你這很怪吧 怎麼後面有個+y? 5<x的時 08/11 14:11
profyang: 後後面的+y是要+(1 < x & x <= 5)的時候的y嗎?size會不 08/11 14:11
profyang: 符合吧? 08/11 14:11
sunev: 所有的東西size都和x一樣大,包括x<5 08/12 10:38