[问题]一个bug求解

楼主: ljuyentintho (小刘)   2016-06-01 00:27:16
如题
程式码如下:
clc
clear all
R=2;
A=2;
J=3;
Fn=kron([1:R],ones(1,J*A))';
Sn=repmat(kron([1:A],ones(1,J))',R,1);
Tn=repmat([1:J]',R*A,1);
x=[repmat('X',R*A*J,1),num2str(Fn),num2str(Sn),num2str(Tn)];
X=mat2cell(x,ones(R*A*J,1),4);
randnum=8.*rand(R*A,1);
for i=1:R*A
temp=randperm(J);
X{(i-1)*J+temp(1),2}=randnum(i);
end
X(cellfun(@isempty,X))={0};
idx=find(cell2mat(X(:,2)));
Y1=cumsum(randnum(1:2:end));
Y2=cumsum(randnum(2:2:end));
y=[repmat('Y',R*A*J,1),num2str(Fn),num2str(Sn),num2str(Tn)];
Y=mat2cell(y,ones(R*A*J,1),4);
Y(idx(1:2:end),2)=mat2cell(Y1,ones(1,length(idx(1:2:end))));
Y(idx(2:2:end),2)=mat2cell(Y2,ones(1,length(idx(2:2:end))));
Y(cellfun(@isempty,Y))={0};
finalx=cell2mat(X(:,2));
finaly=cell2mat(Y(:,2));
if (finaly==0)
probabilityY=0;
else
probabilityY=0.125*exp(-(0.125*finaly));
end
finaly
probabilityY
这是其中一组输出:
finaly =
7.8749
0
0
0
0
3.7263
9.0695
0
0
6.7079
0
0
probabilityY =
0.0467
0.1250
0.1250
0.1250
0.1250
0.0785
0.0402
0.1250
0.1250
0.0540
0.1250
0.1250
我希望当finalY这个矩阵的值为0时
probabilityY对应到的值也是0
不为0时
probabilityY=0.125*exp(-(0.125*finaly))
也写了if跟else判断式
但是为何finaly原本为0的地方还是被代入probabilityY=0.125*exp(-(0.125*finaly)) ?
谢谢好心的大大
作者: ejialan (eji)   2016-06-01 09:20:00
if 后面接向量要全部都是1才会是true 所以逐一判断才对或是把if end那五行改成probabilityY=0.125*exp(-(0.125*finaly));probabilityY(~finaly)=0;
楼主: ljuyentintho (小刘)   2016-06-01 19:08:00
已解决 感谢

Links booklink

Contact Us: admin [ a t ] ucptt.com