1/ Napište funkci, která funguje stejně jako MovingAverage. Vytvořte pokusný list a porovnejte časovou náročnost vaší a originální funkce.

list={a,b,c,d,e,f};

movingAverage[list_List,n_?NumericQ]:=Mean/@Partition[list,n,1]

movingAverage[list_List,vahy_List]:=(vahy.#/Total[vahy])&/@Partition[list,Length[vahy],1]

movingAverage[list,4]
movingAverage[list,{2,3}]

ClearAll[movingAverage];
movingAverage[list_List,vahy_List]:=(vahy.#/Total[vahy])&/@Partition[list,Length[vahy],1];
movingAverage[list_List,n_?NumericQ]:=movingAverage[list,ConstantArray[1,n]];

movingAverage[list,4]
movingAverage[list,{2,3}]

2/ Napište funkci, která má první parametr list dvojic a druhý True či False. List je list dvojic {{x1,y1},{x2,y2},...{xn,yn}}.
Funkce nalezne všechny dvojice, které mají shodnou hodnotu xi a liší se v yi. Pokud je druhý parametr True, dvojice se shodným x a rozdílným y budou ve výsledném listu smazány. Pokud je druhý parametr False, všechny tyto dvojice se nahradí jednou s daným x a y bude průměr ypsilonů.

ClearAll[fce];
fce[ld:{{_,_}..},bool:False|True]:=Module[{listTupl,listSel,listDel,listMeans,listJoin},
listTupl=Tuples[ld,2];
listSel=Select[listTupl,(#[[1,1]]===#[[2,1]]&&#[[1,2]]=!=#[[2,2]])&];
listDel=Complement[ld,Union@@listSel];
listMeans={#[[1,1]],Mean[{#[[1,2]],#[[2,2]]}]}&/@listSel;
listJoin=Join[listDel,Union@listMeans];
If[bool,listJoin,listDel]
];

list={{x1,y1},{x2,y2},{x2,y1},{x3,y2},{xn,yn}};
fce[list,True]

3/ Budiž nějaký grafický objekt uložen v pojmenované proměnné, např. graf1=Plot[Sin[x],{x,0,Pi}]. Napište funkci, která vyexportuje tento graf do souboru graf1.png. Tedy jméno souboru se vytvoří automaticky ze jména proměnné, ve které je grafika uložena.

graf1=Plot[Sin[x],{x,0,Pi}]

ClearAll[fce];
SetAttributes[fce,HoldFirst];
fce[graphics_Symbol]:=Module[{file},
SetDirectory[NotebookDirectory[]];
file=SymbolName[Unevaluated[graphics]]<>".png";
Export[file,graphics]
]

fce[graf1]

4/ Máte soubor s daty z osciloskopu scope_0.csv (sloupce jsou cas,1kanal,2kanal). Tato data načtěte do Mathematicy a zobrazte v grafu osa x - cas, osa y - prvni kanal.

SetDirectory[NotebookDirectory[]];

FileNames[]

data=Import["scope_0.csv"][[3;;]]

ListPlot[data[[All,{1,2}]],AxesLabel->{"cas","1. kanal"}]