作者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/cn.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