if code

2 views (last 30 days)
gaia buratti
gaia buratti on 27 Jul 2011
Hi guys, I need an help with an if, it's the first time I use it and I am not sure if it works because if I write just & a note appears suggesting to use &&, but if I put && turns an error: ??? Operands to the and && operators must be convertible to logical scalar values.
the code is
for t=2:time
dWsim(t,:)=mu0+sigma0.*rndnum(t,:);
Wsim(t,:)=Wsim(t-1,:)+dWsim(t-1,:);
B(t,:)=1./((m-1)*(1-Wsim(t,:))).^(1/(m-1));
sigma(t,:)=sigma0.*((B(t,:)./B(1,:)).^m);
mu(t,:)=(sigma(t,:).^2).*(m./2.*B(t,:))+mu0.*((B(t,:)./B(1,:)).^m);
if(uninum(t,1:N)>0.5)&(mu(t,:)*(1/k)>uninum(t,1:N));
B(t,:)=B(t,:).*(1-k);
else
B(t,:)=B(t,:);
end
end
Can you please explain me in simple word swhich is the difference between & and &&
Thanks in advance
Gaia

Accepted Answer

Jan
Jan on 27 Jul 2011
The IF statenment is usually a scalar, otherwise an implicite ALL is performed. But perhaps you want an ANY:
if any(uninum(t,1:N)>0.5) && any(mu(t,:) / k > uninum(t,1:N))
or:
if all(uninum(t,1:N)>0.5 & mu(t,:) / k > uninum(t,1:N))
BTW: "* (1/k)" -> "/k" looks easier.
  1 Comment
gaia buratti
gaia buratti on 27 Jul 2011
thabks for the explanation na dfor the suggestion, it does not solve my problem but can be really useful in the future. Btw, thanks to you I understood the mistake, now seems working.
I know about the I was just copying a formula...

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!