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

 採用された回答

Jan
Jan 2011 年 7 月 27 日

1 投票

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 件のコメント

gaia buratti
gaia buratti 2011 年 7 月 27 日
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...

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeProgramming についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by