function [spojeni,matice,zadany,vektor] = jednapromenna(pocpoz,b)          %funkce pro model s jednou vysvetlujici promennou bude vracet tri parametry a jsou ji predany dva

spojeni = ddeinit('excel','linearniregrese.xls');   %ddeinit pro navazeni komunikace s rozhranim otevreneho souboru MS Excel odpovidajiciho nazvu
if spojeni==0                                       %osetreni zda je prislusny soubor otevren 
           Vypis=str2mat(... 
        'Není otevøen soubor linearniregrese.xls pro naètení dat!');
        set(findobj('Tag','List'),'String',Vypis); 
        error('Není otevøen soubor linearniregrese.xls pro naètení dat!');    
end
Z=ddereq(spojeni, 'r32c4:r131c4');                                  %import dat podle zadaneho pole bunek ze souboru MS Excel
y=ddereq(spojeni, 'r32c3:r131c3');
c=size(Z);                                                          %osetreni zda jsou data v MS Excel zadavana s desetinnou teckou
d=size(y);
if c(2)~=1 || d(2)~=1
               Vypis=str2mat(... 
        'Špatnì zadané vstupní hodnoty v souboru linearniregrese.xls! Používejte desetinnuo teèku!');
        set(findobj('Tag','List'),'String',Vypis); 
        error('Špatnì zadané vstupní hodnoty v souboru linearniregrese.xls! Používejte desetinnuo teèku!'); 
end                                                 %jednotliva osetreni importovnych dat, aby pri jakkoliv spatne zadanych vstupech se vse spravne upravilo
                                                    %doplneni importovanych dat na 100 radku
if length(Z)<100
        Z(length(Z)+1 : 100,:)=zeros; 
end

if length(y)<100
         y(length(y)+1 : 100,:)=zeros;
end
if pocpoz<100                                       %jestlize je pocet pozorovani mensi nez maximalni 100, oriznou se data podle zadani
    Z(pocpoz+1 : 100,:)=[];
    y(pocpoz+1 : 100,:)=[];
    a=size(Z);
    X=zeros(a(1),4);                                %priprava matice X podle rozmeru Z
else
    X=zeros(100,4);    
end

x=0;
for i=4:-1:1                                        %podle zadaneho modelu se naplni matice X na zaklade vstupnich dat z matice Z 
    if b(i)==1
       X(:,i)=[]; 
    else
        switch (b(i))
        case(2)
        X(:,i+1)=Z(:,1);
        case(3)
        X(:,i+1)=Z(:,1).^2;
        case(4)
        X(:,i+1)=Z(:,1).^3;
        end
        x=x+1;
    end
end

X(:,1)=ones;                                        %pridani prvniho sloupce jednicek
[n,k]=size(X);                                      %osetreni zda odpovida pocet sloupcu matice X zadanemu modelu
if x~=k-1
           Vypis=str2mat(... 
        'Poèet vysvìtlujících promìnných musí být stejný jako poèet parametrù!');
        set(findobj('Tag','List'),'String',Vypis); 
        error('Poèet vysvìtlujících promìnných musí být stejný jako poèet parametrù!'); 
end
                                                    %vraceni dat
matice = X;
zadany = Z;
vektor =y;
