How can I fix error in fzero (line 241)

1 visualizzazione (ultimi 30 giorni)
Szabó-Takács Beáta
Szabó-Takács Beáta il 3 Set 2015
Commentato: Torsten il 4 Set 2015
When I use the following fzero function in Matlab R2012a:
for jj=1:358;
mat=cv_o2{jj};
pr=CC_m{jj};
x = [-5 100];
fun = @(x)mat-(std(power(pr,x),1,3)./mean(power(pr,x),3))
b=fzero(fun,x);
BB{jj}=b;
end
end
I get the following error message:
Operands to the || and && operators must be convertible to logical scalar values.
Error in fzero (line 241)
if any(~isfinite([fa fb])) || any(~isreal([fa fb]))
I do not understand what the matter is. Could someone write me how can I fix this error?

Risposte (1)

Titus Edelhofer
Titus Edelhofer il 3 Set 2015
Hi,
fzero works for scalar valued functions. Looking at your function I guess it's not scalar valued (i.e., if you call your function fun for one value, the value should not be a vector/matrix but a scalar ("number").
Titus
  7 Commenti
Titus Edelhofer
Titus Edelhofer il 3 Set 2015
Hi,
but if pr is a 3D matrix, should't it then be pr(i,j,:)?
Titus
Torsten
Torsten il 4 Set 2015
pr(i,j) is a scalar. Thus taking nanstd(pr(i,j)^x) gives Inf since you divide by 0.
Best wishes
Torsten.

Accedi per commentare.

Categorie

Scopri di più su Environment and Settings in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by