MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today**New to MATLAB?**

Asked by TALA MOUSSA
on 29 Nov 2011

hi , Im a beginner in using matlab , i tried several times to debug my program but the error is still the same!! can you help me please:) Thanks

clear clear all

global kfiler d kmatrice phi kmes kcalc y s Rcmin kcalcmin Rc kmatrice=[29.16;0;0;0;0]; kfiler=2000; d=91e-6;

kmes = [29.16;31.51;36.33;39.9;44.3];

phi = [0 0 0 0 0;0 7.4 0 0 0;0 0 11.52 0 0; 0 0 0 18.44 0;0 0 0 0 23.88];

kcalc=kmatrice*(2*kmatrice+(kfiler/(1+2*(kfiler*Rc/d)))-2*phi*(kmatrice-(kfiler/(1+2*(kfiler*Rc/d)))))/(2*kmatrice+(kfiler/(1+2*(kfiler*Rc/d)))+phi*(kmatrice-(kfiler/(1+2*(kfiler*Rc/d))))); y= (kmes-kcalc)^2;

s= @(Rc)sum(y); kcalcmin = fminsearch(s,kmatrice);

Rcmin=(kfiler/kcalcmin-1)*d/(2*kfiler);

Rcmin

*No products are associated with this question.*

Answer by Sven
on 29 Nov 2011

Accepted answer

**Rc** is empty (it gets initialised as a global variable but nothing is assigned to it), but it's used in your **calc=...** calculation.

Was this intentional?

The problem here is that anything multiplied by an empty [] will return []. And any non-empty matrix *divided* by an empty matrix will cause an error.

The final part of your calculation:

kfiler/(1+2*(kfiler*Rc/d))

Is one such part. **kfiler** is not empty, but **Rc** (and consequently **(1+2**(kfiler*Rc/d))* is empty.

You'll get the same error if you type in:

100 / []

One small suggesion: break up your calculation into a few lines. Otherwise it will be a complete nightmare to debug because all error messages will point to this one huge line (which doesn't help you track them down)

TALA MOUSSA
on 29 Nov 2011

Thanks Sven , my problem is to find a minimum of s whis is the sum of y by the least square regression. So when s is minimun i have to search the minimum value of Rc.

Answer by Walter Roberson
on 29 Nov 2011

Please consider the possibility that you want to use ./ ( rdivide) instead of / ( mrdivide) in your code.

TALA MOUSSA
on 30 Nov 2011

Is anyone knows how to use the least square regression method in matlab?

## 0 Comments