[问题] 矩阵判断式 问题

楼主: 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;
作者: tn00364361 (小氵斿)   2017-08-09 13:48:00
如果两边的算子都已经是binary,那logical and跟addition是一样的运算更正,不是addition,应该是multiplication
作者: sunev (Veritas)   2017-08-09 14:03:00
改用 &
作者: YoursEver (猪是妳)   2017-08-09 15:24:00
这样写,不就只剩下第三行的y才有效? 前两行会被盖过.
作者: sunev (Veritas)   2017-08-09 16:56:00
楼上精辟,所以要改成 y(1<x&x<=5)=exp(7*x(1<x&x<5).^2);
作者: profyang (prof)   2017-08-09 17:43:00
在这之前应该要先宣告y=zeros(size(x))之类的 不然size好像会出问题
作者: sunev (Veritas)   2017-08-10 08:38:00
回楼上,刚试了一下,matlab会自动把y扩充到适当的size但如果x<5的case不存在,y可能就不会和x一样大,所以还是先宣告大小比较好没错。回原PO,这样会多算一些东西,不过如果不是效能瓶颈就没差
作者: profyang (prof)   2017-08-11 14:11:00
等等 仔细看看原PO你这很怪吧 怎么后面有个+y? 5<x的时后后面的+y是要+(1 < x & x <= 5)的时候的y吗?size会不符合吧?
作者: sunev (Veritas)   2017-08-12 10:38:00
所有的东西size都和x一样大,包括x<5

Links booklink

Contact Us: admin [ a t ] ucptt.com