function [regpar,yy]=MNC(X,Y,xx,fi0,fi1,fi2,fi3,fi4,fi5,fi6,fi7,fi8,fi9)
% function [par,yy]=MNC(X,Y,xx,fi0,fi1,fi2,fi3,fi4,fi5,fi6,fi7,fi8,fi9)
% Metoda nejmensich ctvercu
% X,Y - data
% xx  - body pro vypocet fukcnich hodnot
% yy  - hodnoty v bodech xx
% fi0,fi1,... - bazove funkce - textove retezce
% regpar - regresni koeficienty

nfi=nargin-4;   % pocet bazovych funkci, cislovano od nuly

X=X(:);
Y=Y(:);         % data ve sloupci

FI=[];
b=[];
% vytvoreni matice planu
for k=0:nfi
  prikaz=['pom=fi',num2str(k),';'];
  eval(prikaz);
  pom=vectorize(pom);
  prikaz=['fi',num2str(k),'=@(x)',pom,';'];
  eval(prikaz);
  prikaz=['fik=fi',num2str(k),';'];
  eval(prikaz);
  FI1=fik(X);
  if length(FI1)==1, FI1=FI1*ones(size(X)); end
  FI=[FI,FI1];
  b=[b;FI1'*Y];
end
A=FI'*FI;
regpar=inv(A)*b;

yy=zeros(size(xx));
% vypocet funkcnih hodnot
for k=0:nfi
  prikaz=['fik=fi',num2str(k),';'];
  eval(prikaz);
  fxx=fik(xx);
  if length(fxx)==1, fxx=fxx*ones(size(xx)); end
  yy=yy+regpar(k+1)*fxx;
end
  


