作者gragon (QQ甜八寶)
看板MATLAB
標題[問題] 矩陣判斷式 問題
時間Wed Aug 9 13:40:50 2017
假如我有一個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://webptt.com/m.aspx?n=bbs/MATLAB/M.1502257252.A.5D8.html
1F:→ tn00364361: 如果兩邊的運算元都已經是binary,那logical and跟add 08/09 13:48
2F:→ tn00364361: ition是一樣的運算 08/09 13:48
3F:→ tn00364361: 更正,不是addition,應該是multiplication 08/09 13:49
4F:推 sunev: 改用 & 08/09 14:03
5F:→ YoursEver: 這樣寫,不就只剩下第三行的y才有效? 前兩行會被蓋過. 08/09 15:24
6F:推 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
7F:推 profyang: 在這之前應該要先宣告y=zeros(size(x))之類的 不然size 08/09 17:43
8F:→ profyang: 好像會出問題 08/09 17:43
9F:推 sunev: 回樓上,剛試了一下,matlab會自動把y擴充到適當的size 08/10 08:38
10F:→ sunev: 但如果x<5的case不存在,y可能就不會和x一樣大,所以還是 08/10 08:39
11F:→ sunev: 先宣告大小比較好沒錯。 08/10 08:39
12F:→ sunev: 回原PO,這樣會多算一些東西,不過如果不是效能瓶頸就沒差 08/10 08:40
13F:推 profyang: 等等 仔細看看原PO你這很怪吧 怎麼後面有個+y? 5<x的時 08/11 14:11
14F:→ profyang: 後後面的+y是要+(1 < x & x <= 5)的時候的y嗎?size會不 08/11 14:11
15F:→ profyang: 符合吧? 08/11 14:11
16F:推 sunev: 所有的東西size都和x一樣大,包括x<5 08/12 10:38