[問題] 矩陣判斷式 問題

看板MATLAB作者 (QQ甜八寶)時間7年前 (2017/08/09 13:40), 7年前編輯推噓6(6010)
留言16則, 4人參與, 最新討論串1/1
假如我有一個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

08/09 13:48, , 1F
如果兩邊的運算元都已經是binary,那logical and跟add
08/09 13:48, 1F

08/09 13:48, , 2F
ition是一樣的運算
08/09 13:48, 2F

08/09 13:49, , 3F
更正,不是addition,應該是multiplication
08/09 13:49, 3F

08/09 14:03, , 4F
改用 &
08/09 14:03, 4F

08/09 15:24, , 5F
這樣寫,不就只剩下第三行的y才有效? 前兩行會被蓋過.
08/09 15:24, 5F

08/09 16:56, , 6F
樓上精闢,所以要改成 y(1<x&x<=5)=exp(7*x(1<x&x<5).^2);
08/09 16:56, 6F
※ 編輯: gragon (140.117.160.132), 08/09/2017 17:24:23

08/09 17:43, , 7F
在這之前應該要先宣告y=zeros(size(x))之類的 不然size
08/09 17:43, 7F

08/09 17:43, , 8F
好像會出問題
08/09 17:43, 8F

08/10 08:38, , 9F
回樓上,剛試了一下,matlab會自動把y擴充到適當的size
08/10 08:38, 9F

08/10 08:39, , 10F
但如果x<5的case不存在,y可能就不會和x一樣大,所以還是
08/10 08:39, 10F

08/10 08:39, , 11F
先宣告大小比較好沒錯。
08/10 08:39, 11F

08/10 08:40, , 12F
回原PO,這樣會多算一些東西,不過如果不是效能瓶頸就沒差
08/10 08:40, 12F

08/11 14:11, , 13F
等等 仔細看看原PO你這很怪吧 怎麼後面有個+y? 5<x的時
08/11 14:11, 13F

08/11 14:11, , 14F
後後面的+y是要+(1 < x & x <= 5)的時候的y嗎?size會不
08/11 14:11, 14F

08/11 14:11, , 15F
符合吧?
08/11 14:11, 15F

08/12 10:38, , 16F
所有的東西size都和x一樣大,包括x<5
08/12 10:38, 16F
文章代碼(AID): #1PYg1aNO (MATLAB)
文章代碼(AID): #1PYg1aNO (MATLAB)