diff --git a/Manifest.toml b/Manifest.toml new file mode 100644 index 0000000000000000000000000000000000000000..91a42cfce85bd943bc4146076cb7a3bf315ebab8 --- /dev/null +++ b/Manifest.toml @@ -0,0 +1,599 @@ +[[AbstractFFTs]] +deps = ["Compat", "LinearAlgebra"] +git-tree-sha1 = "8d59c3b1463b5e0ad05a3698167f85fac90e184d" +uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" +version = "0.3.2" + +[[ArrayInterface]] +deps = ["Requires", "Test"] +git-tree-sha1 = "6a1a371393e56f5e8d5657fe4da4b11aea0bfbae" +uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" +version = "0.1.1" + +[[Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[BinDeps]] +deps = ["Compat", "Libdl", "SHA", "URIParser"] +git-tree-sha1 = "12093ca6cdd0ee547c39b1870e0c9c3f154d9ca9" +uuid = "9e28174c-4ba2-5203-b857-d8d62c4213ee" +version = "0.8.10" + +[[BinaryProvider]] +deps = ["Libdl", "Pkg", "SHA", "Test"] +git-tree-sha1 = "055eb2690182ebc31087859c3dd8598371d3ef9e" +uuid = "b99e7846-7c00-51b0-8f62-c81ae34c0232" +version = "0.5.3" + +[[Blosc]] +deps = ["BinaryProvider", "CMakeWrapper", "Compat", "Libdl"] +git-tree-sha1 = "71fb23581e1f0b0ae7be8ccf0ebfb3600e23ca41" +uuid = "a74b3585-a348-5f62-a45c-50e91977d574" +version = "0.5.1" + +[[BufferedStreams]] +deps = ["Compat", "Test"] +git-tree-sha1 = "5d55b9486590fdda5905c275bb21ce1f0754020f" +uuid = "e1450e63-4bb3-523b-b2a4-4ffa8c0fd77d" +version = "1.0.0" + +[[CMake]] +deps = ["BinDeps", "Libdl", "Test"] +git-tree-sha1 = "6e39bef3cbb8321e8a464b18a5c20d7cef813938" +uuid = "631607c0-34d2-5d66-819e-eb0f9aa2061a" +version = "1.1.1" + +[[CMakeWrapper]] +deps = ["BinDeps", "CMake", "Libdl", "Parameters", "Test"] +git-tree-sha1 = "2b43d451639984e3571951cc687b8509b0a86c6d" +uuid = "d5fb7624-851a-54ee-a528-d3f3bac0b4a0" +version = "0.2.2" + +[[CRC32c]] +uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc" + +[[Calculus]] +deps = ["Compat"] +git-tree-sha1 = "f60954495a7afcee4136f78d1d60350abd37a409" +uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" +version = "0.4.1" + +[[ColorTypes]] +deps = ["FixedPointNumbers", "Random", "Test"] +git-tree-sha1 = "f73b0e10f2a5756de7019818a41654686da06b09" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.7.5" + +[[Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "InteractiveUtils", "Printf", "Reexport", "Test"] +git-tree-sha1 = "9f0a0210450acb91c730b730a994f8eef1d3d543" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.9.5" + +[[CommonSubexpressions]] +deps = ["Test"] +git-tree-sha1 = "efdaf19ab11c7889334ca247ff4c9f7c322817b0" +uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" +version = "0.2.0" + +[[Compat]] +deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"] +git-tree-sha1 = "49269e311ffe11ac5b334681d212329002a9832a" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "1.5.1" + +[[Conda]] +deps = ["Compat", "JSON", "VersionParsing"] +git-tree-sha1 = "b625d802587c2150c279a40a646fba63f9bd8187" +uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d" +version = "1.2.0" + +[[Contour]] +deps = ["LinearAlgebra", "StaticArrays", "Test"] +git-tree-sha1 = "b974e164358fea753ef853ce7bad97afec15bb80" +uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" +version = "0.5.1" + +[[ControlSystemIdentification]] +deps = ["ControlSystems", "DSP", "FFTW", "FillArrays", "LinearAlgebra", "Optim", "Parameters", "Random", "RecipesBase", "Roots", "Statistics", "Test", "TotalLeastSquares"] +git-tree-sha1 = "a061988a6d8c5c586eb121262319e8d6dcb1f5c7" +repo-rev = "master" +repo-url = "https://github.com/baggepinnen/ControlSystemIdentification.jl" +uuid = "0861197f-74c3-5f66-9cd7-8a02bdf51734" +version = "0.0.0" + +[[ControlSystems]] +deps = ["Colors", "DSP", "IterTools", "LaTeXStrings", "LinearAlgebra", "OrdinaryDiffEq", "Plots", "Polynomials", "Printf", "SparseArrays", "Test"] +git-tree-sha1 = "0c017cd077ef5d316766b9a55df02d9841ebd014" +uuid = "a6e380b2-a6ca-5380-bf3e-84a91bcd477e" +version = "0.5.0" + +[[DSP]] +deps = ["AbstractFFTs", "Compat", "FFTW", "LinearAlgebra", "Polynomials", "Random", "Reexport", "SpecialFunctions"] +git-tree-sha1 = "5ec38ebc4ddf6320ad50b826eb8fd7fb521993a5" +uuid = "717857b8-e6f2-59f4-9121-6e50c889abd2" +version = "0.5.2" + +[[DataStructures]] +deps = ["InteractiveUtils", "OrderedCollections", "Random", "Serialization", "Test"] +git-tree-sha1 = "ca971f03e146cf144a9e2f2ce59674f5bf0e8038" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.15.0" + +[[Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[DelimitedFiles]] +deps = ["Mmap"] +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" + +[[DiffBase]] +deps = ["StaticArrays"] +git-tree-sha1 = "38522d70e417cf9ace93848f17eb9fff20d486d2" +uuid = "c5cfe0b6-c10a-51a5-87e3-fd79235949f0" +version = "0.3.2" + +[[DiffEqBase]] +deps = ["Compat", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "RecursiveArrayTools", "Requires", "Roots", "SparseArrays", "StaticArrays", "Statistics", "SuiteSparse", "TableTraits", "Test", "TreeViews"] +git-tree-sha1 = "c60ea94050751f09e3f86dc6182a4cccac9806b8" +uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" +version = "4.32.0" + +[[DiffEqDiffTools]] +deps = ["LinearAlgebra", "Test"] +git-tree-sha1 = "67700c9fc82033ec68a145bc650f6b9debdf9103" +uuid = "01453d9d-ee7c-5054-8395-0335cb756afa" +version = "0.7.1" + +[[DiffEqOperators]] +deps = ["DiffEqBase", "LinearAlgebra", "Random", "SparseArrays", "StaticArrays", "Test"] +git-tree-sha1 = "332eea616ae687e7e4581602947ad5f053c7c650" +uuid = "9fdde737-9c7f-55bf-ade8-46b3f136cc48" +version = "3.4.0" + +[[DiffResults]] +deps = ["Compat", "StaticArrays"] +git-tree-sha1 = "db8acf46717b13d6c48deb7a12007c7f85a70cf7" +uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" +version = "0.0.3" + +[[DiffRules]] +deps = ["Random", "Test"] +git-tree-sha1 = "09d69da75967ec48a8b1ad0897ec9144ee052bf9" +uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" +version = "0.0.8" + +[[Distances]] +deps = ["LinearAlgebra", "Printf", "Random", "Statistics", "Test"] +git-tree-sha1 = "0e37d8a95bafbeb9c800ef27ab6f443d29e17610" +uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" +version = "0.7.4" + +[[Distributed]] +deps = ["LinearAlgebra", "Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[DocStringExtensions]] +deps = ["LibGit2", "Markdown", "Pkg", "Test"] +git-tree-sha1 = "1df01539a1c952cef21f2d2d1c092c2bcf0177d7" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.6.0" + +[[Documenter]] +deps = ["Base64", "DocStringExtensions", "InteractiveUtils", "LibGit2", "Logging", "Markdown", "Pkg", "REPL", "Random", "Test", "Unicode"] +git-tree-sha1 = "de745be4b00336588ab3269d5f43517e5c012973" +uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4" +version = "0.21.1" + +[[ExponentialUtilities]] +deps = ["LinearAlgebra", "Printf", "Random", "SparseArrays", "Test"] +git-tree-sha1 = "a25edb801ef3299b1c0fbbfe62692a074a82893b" +uuid = "d4d017d3-3776-5f7e-afef-a10c40355c18" +version = "1.3.0" + +[[FFTW]] +deps = ["AbstractFFTs", "BinaryProvider", "Compat", "Conda", "Libdl", "LinearAlgebra", "Reexport", "Test"] +git-tree-sha1 = "29cda58afbf62f35b1a094882ad6c745a47b2eaa" +uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" +version = "0.2.4" + +[[FileIO]] +deps = ["Pkg", "Random", "Test"] +git-tree-sha1 = "c94b0787956629036fb2b20fccde9e52b89d079a" +uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" +version = "1.0.5" + +[[FillArrays]] +deps = ["LinearAlgebra", "Random", "SparseArrays", "Test"] +git-tree-sha1 = "471b7e33dc9c9c5b9170045dd57c8ba0927b2918" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "0.4.0" + +[[FixedPointNumbers]] +deps = ["Test"] +git-tree-sha1 = "b8045033701c3b10bf2324d7203404be7aef88ba" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.5.3" + +[[ForwardDiff]] +deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "InteractiveUtils", "LinearAlgebra", "NaNMath", "Random", "SparseArrays", "SpecialFunctions", "StaticArrays", "Test"] +git-tree-sha1 = "e393bd3b9102659fb24fe88caedec41f2bc2e7de" +uuid = "f6369f11-7733-5829-9624-2563aa707210" +version = "0.10.2" + +[[GR]] +deps = ["Base64", "DelimitedFiles", "LinearAlgebra", "Pkg", "Printf", "Random", "Serialization", "Sockets", "Test"] +git-tree-sha1 = "3c62c19ddf86ff016829fdac1663cd3c75558c34" +uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" +version = "0.37.0" + +[[GenericSVD]] +deps = ["LinearAlgebra", "Random", "Test"] +git-tree-sha1 = "8aa93c3f3d81562a8962047eafcc5712af0a0f59" +uuid = "01680d73-4ee2-5a08-a1aa-533608c188bb" +version = "0.2.1" + +[[HDF5]] +deps = ["BinDeps", "Blosc", "CRC32c", "Distributed", "Homebrew", "Libdl", "LinearAlgebra", "Mmap", "Pkg", "Test", "WinRPM"] +git-tree-sha1 = "dd83e1e9c72e44e3a156438b552cf75dbdda722f" +uuid = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" +version = "0.11.0" + +[[HTTPClient]] +deps = ["Compat", "LibCURL"] +git-tree-sha1 = "161d5776ae8e585ac0b8c20fb81f17ab755b3671" +uuid = "0862f596-cf2d-50af-8ef4-f2be67dfa83f" +version = "0.2.1" + +[[Homebrew]] +deps = ["BinDeps", "InteractiveUtils", "JSON", "Libdl", "Test", "Unicode"] +git-tree-sha1 = "f01fb2f34675f9839d55ba7238bab63ebd2e531e" +uuid = "d9be37ee-ecc9-5288-90f1-b9ca67657a75" +version = "0.7.1" + +[[InteractiveUtils]] +deps = ["LinearAlgebra", "Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[IterTools]] +deps = ["SparseArrays", "Test"] +git-tree-sha1 = "79246285c43602384e6f1943b3554042a3712056" +uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" +version = "1.1.1" + +[[IteratorInterfaceExtensions]] +deps = ["Test"] +git-tree-sha1 = "5484e5ede2a4137b9643f4d646e8e7b87b794415" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "0.1.1" + +[[JLD]] +deps = ["Compat", "FileIO", "HDF5", "LegacyStrings", "Profile", "Random"] +git-tree-sha1 = "95fd5d7f129918a75d0535aaaf5b8e235e6e0b0b" +uuid = "4138dd39-2aa7-5051-a626-17a0bb65d9c8" +version = "0.9.1" + +[[JSON]] +deps = ["Dates", "Distributed", "Mmap", "Sockets", "Test", "Unicode"] +git-tree-sha1 = "1f7a25b53ec67f5e9422f1f551ee216503f4a0fa" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.20.0" + +[[LaTeXStrings]] +deps = ["Compat"] +git-tree-sha1 = "7ab9b8788cfab2bdde22adf9004bda7ad9954b6c" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.0.3" + +[[LabProcesses]] +deps = ["ControlSystems", "DSP", "LinearAlgebra", "Parameters", "Pkg", "Test"] +git-tree-sha1 = "c0caf55a5062b94dc844927f782827c6e04a6340" +repo-rev = "master" +repo-url = "https://gitlab.control.lth.se/processes/LabProcesses.jl" +uuid = "6929cf19-6a72-5044-8237-19d456703100" +version = "0.0.0" + +[[LegacyStrings]] +deps = ["Compat"] +git-tree-sha1 = "d4b9bde2694c552fe579cc4462733f1ce08733fe" +uuid = "1b4a561d-cfcb-5daf-8433-43fcf8b4bea3" +version = "0.4.1" + +[[LibCURL]] +deps = ["BinaryProvider", "Compat", "Libdl", "Printf"] +git-tree-sha1 = "6339c87cb76923a3cf947fcd213cbc364355c9c9" +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.4.1" + +[[LibExpat]] +deps = ["Compat"] +git-tree-sha1 = "fde352ec13479e2f90e57939da2440fb78c5e388" +uuid = "522f3ed2-3f36-55e3-b6df-e94fee9b0c07" +version = "0.5.0" + +[[LibGit2]] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[Libz]] +deps = ["BufferedStreams", "Random", "Test"] +git-tree-sha1 = "d405194ffc0293c3519d4f7251ce51baac9cc871" +uuid = "2ec943e9-cfe8-584d-b93d-64dcb6d567b7" +version = "1.0.0" + +[[LineSearches]] +deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf", "Test"] +git-tree-sha1 = "54eb90e8dbe745d617c78dee1d6ae95c7f6f5779" +uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" +version = "7.0.1" + +[[LinearAlgebra]] +deps = ["Libdl"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[MacroTools]] +deps = ["Compat"] +git-tree-sha1 = "c443e1c8d58a4e9f61b708ad0a88286c7042145b" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.4.4" + +[[Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[Measures]] +deps = ["Test"] +git-tree-sha1 = "ddfd6d13e330beacdde2c80de27c1c671945e7d9" +uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +version = "0.3.0" + +[[Missings]] +deps = ["Dates", "InteractiveUtils", "SparseArrays", "Test"] +git-tree-sha1 = "d1d2585677f2bd93a97cfeb8faa7a0de0f982042" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "0.4.0" + +[[Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[MuladdMacro]] +deps = ["MacroTools", "Test"] +git-tree-sha1 = "41e6e7c4b448afeaddaac7f496b414854f83b848" +uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" +version = "0.2.1" + +[[NLSolversBase]] +deps = ["Calculus", "DiffEqDiffTools", "DiffResults", "Distributed", "ForwardDiff", "LinearAlgebra", "Random", "SparseArrays", "Test"] +git-tree-sha1 = "5a1d1b047ffb18eb72cc898245eaef3e2dd63762" +uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" +version = "7.1.2" + +[[NLsolve]] +deps = ["DiffBase", "DiffEqDiffTools", "Distances", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "Printf", "Reexport", "SparseArrays", "Test"] +git-tree-sha1 = "0e046f4f72801c9782d64db972ce66a85d3473f1" +uuid = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" +version = "3.0.1" + +[[NaNMath]] +deps = ["Compat"] +git-tree-sha1 = "ce3b85e484a5d4c71dd5316215069311135fa9f2" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "0.3.2" + +[[Optim]] +deps = ["Calculus", "DiffEqDiffTools", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "Random", "SparseArrays", "StatsBase", "Test"] +git-tree-sha1 = "0f2a6c6ff9db396cc7af15bb1cf057a26662ff17" +uuid = "429524aa-4258-5aef-a3af-852621145aeb" +version = "0.17.2" + +[[OrderedCollections]] +deps = ["Random", "Serialization", "Test"] +git-tree-sha1 = "85619a3f3e17bb4761fe1b1fd47f0e979f964d5b" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.0.2" + +[[OrdinaryDiffEq]] +deps = ["DataStructures", "DiffEqBase", "DiffEqDiffTools", "DiffEqOperators", "ExponentialUtilities", "ForwardDiff", "GenericSVD", "InteractiveUtils", "LinearAlgebra", "Logging", "MuladdMacro", "NLsolve", "Parameters", "Printf", "Random", "RecursiveArrayTools", "Reexport", "SparseArrays", "StaticArrays", "Statistics", "Test"] +git-tree-sha1 = "bd2695f7010757296ad4414738913ee778dc738d" +uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" +version = "4.21.1" + +[[Parameters]] +deps = ["Markdown", "OrderedCollections", "REPL", "Test"] +git-tree-sha1 = "70bdbfb2bceabb15345c0b54be4544813b3444e4" +uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" +version = "0.10.3" + +[[Pkg]] +deps = ["Dates", "LibGit2", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" + +[[PlotThemes]] +deps = ["PlotUtils", "Requires", "Test"] +git-tree-sha1 = "f3afd2d58e1f6ac9be2cea46e4a9083ccc1d990b" +uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" +version = "0.3.0" + +[[PlotUtils]] +deps = ["Colors", "Dates", "Printf", "Random", "Reexport", "Test"] +git-tree-sha1 = "fd28f30a294a38ec847de95d8ac7ac916ccd7c06" +uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" +version = "0.5.5" + +[[Plots]] +deps = ["Base64", "Contour", "Dates", "FixedPointNumbers", "GR", "JSON", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "Printf", "REPL", "Random", "RecipesBase", "Reexport", "Requires", "Showoff", "SparseArrays", "StaticArrays", "Statistics", "StatsBase", "Test", "UUIDs"] +git-tree-sha1 = "1c345ad538fa31ea6953d89a9d0cbef21e86a3ed" +uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +version = "0.23.0" + +[[Polynomials]] +deps = ["LinearAlgebra", "SparseArrays", "Test"] +git-tree-sha1 = "62142bd65d3f8aeb2226ec64dd8493349147df94" +uuid = "f27b6e38-b328-58d1-80ce-0feddd5e7a45" +version = "0.5.2" + +[[PositiveFactorizations]] +deps = ["LinearAlgebra", "Test"] +git-tree-sha1 = "86ae7329c4b5c266acf5c7c524a972300d991e1c" +uuid = "85a6dd25-e78a-55b7-8502-1745935b8125" +version = "0.2.1" + +[[Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[Profile]] +deps = ["Printf"] +uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" + +[[ProgressMeter]] +deps = ["Distributed", "Printf", "Random", "Test"] +git-tree-sha1 = "48058bc11607676e5bbc0b974af79106c6200787" +uuid = "92933f4c-e287-5a05-a399-4b506db050ca" +version = "0.9.0" + +[[REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[Random]] +deps = ["Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[RecipesBase]] +deps = ["Random", "Test"] +git-tree-sha1 = "0b3cb370ee4dc00f47f1193101600949f3dcf884" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "0.6.0" + +[[RecursiveArrayTools]] +deps = ["ArrayInterface", "RecipesBase", "Requires", "StaticArrays", "Statistics", "Test"] +git-tree-sha1 = "187ea7dd541955102c7035a6668613bdf52022ca" +uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" +version = "0.20.0" + +[[Reexport]] +deps = ["Pkg"] +git-tree-sha1 = "7b1d07f411bc8ddb7977ec7f377b97b158514fe0" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "0.2.0" + +[[Requires]] +deps = ["Test"] +git-tree-sha1 = "f6fbf4ba64d295e146e49e021207993b6b48c7d1" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "0.5.2" + +[[Roots]] +deps = ["Compat", "Printf"] +git-tree-sha1 = "2e7171b6f3b58b81201ba37d9e1220aff6d904a1" +uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" +version = "0.7.4" + +[[SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" + +[[Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[SharedArrays]] +deps = ["Distributed", "Mmap", "Random", "Serialization"] +uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" + +[[Showoff]] +deps = ["Compat"] +git-tree-sha1 = "276b24f3ace98bec911be7ff2928d497dc759085" +uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" +version = "0.2.1" + +[[Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[SortingAlgorithms]] +deps = ["DataStructures", "Random", "Test"] +git-tree-sha1 = "03f5898c9959f8115e30bc7226ada7d0df554ddd" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "0.3.1" + +[[SparseArrays]] +deps = ["LinearAlgebra", "Random"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[SpecialFunctions]] +deps = ["BinDeps", "BinaryProvider", "Libdl", "Test"] +git-tree-sha1 = "0b45dc2e45ed77f445617b99ff2adf0f5b0f23ea" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "0.7.2" + +[[StaticArrays]] +deps = ["InteractiveUtils", "LinearAlgebra", "Random", "Statistics", "Test"] +git-tree-sha1 = "1eb114d6e23a817cd3e99abc3226190876d7c898" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "0.10.2" + +[[Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[StatsBase]] +deps = ["DataStructures", "DelimitedFiles", "LinearAlgebra", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "Test"] +git-tree-sha1 = "7b596062316c7d846b67bf625d5963a832528598" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.27.0" + +[[SuiteSparse]] +deps = ["Libdl", "LinearAlgebra", "SparseArrays"] +uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" + +[[TableTraits]] +deps = ["IteratorInterfaceExtensions", "Test"] +git-tree-sha1 = "eba4b1d0a82bdd773307d652c6e5f8c82104c676" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "0.4.1" + +[[Test]] +deps = ["Distributed", "InteractiveUtils", "Logging", "Random"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[TotalLeastSquares]] +deps = ["FillArrays", "LinearAlgebra", "Printf", "Random", "SparseArrays", "Statistics", "Test"] +git-tree-sha1 = "65a44f8159e02bccedf975365be8d7f5d78e317b" +uuid = "028f657a-7ace-5159-a694-8cfd97933b0c" +version = "0.1.1" + +[[TreeViews]] +deps = ["Test"] +git-tree-sha1 = "8d0d7a3fe2f30d6a7f833a5f19f7c7a5b396eae6" +uuid = "a2a6695c-b41b-5b7d-aed9-dbfdeacea5d7" +version = "0.3.0" + +[[URIParser]] +deps = ["Test", "Unicode"] +git-tree-sha1 = "6ddf8244220dfda2f17539fa8c9de20d6c575b69" +uuid = "30578b45-9adc-5946-b283-645ec420af67" +version = "0.4.0" + +[[UUIDs]] +deps = ["Random"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[VersionParsing]] +deps = ["Compat"] +git-tree-sha1 = "c9d5aa108588b978bd859554660c8a5c4f2f7669" +uuid = "81def892-9a0e-5fdd-b105-ffc91e053289" +version = "1.1.3" + +[[WinRPM]] +deps = ["BinDeps", "Compat", "HTTPClient", "LibExpat", "Libdl", "Libz", "URIParser"] +git-tree-sha1 = "2a889d320f3b77d17c037f295859fe570133cfbf" +uuid = "c17dfb99-b4f7-5aad-8812-456da1ad7187" +version = "0.4.2" diff --git a/Project.toml b/Project.toml new file mode 100644 index 0000000000000000000000000000000000000000..a68942256ac3a5375af9627ad107ab810f7ab1c3 --- /dev/null +++ b/Project.toml @@ -0,0 +1,11 @@ +[deps] +ControlSystemIdentification = "0861197f-74c3-5f66-9cd7-8a02bdf51734" +ControlSystems = "a6e380b2-a6ca-5380-bf3e-84a91bcd477e" +DSP = "717857b8-e6f2-59f4-9121-6e50c889abd2" +Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" +GR = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" +JLD = "4138dd39-2aa7-5051-a626-17a0bb65d9c8" +LabProcesses = "6929cf19-6a72-5044-8237-19d456703100" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +Polynomials = "f27b6e38-b328-58d1-80ce-0feddd5e7a45" +ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca" diff --git a/README.md b/README.md index 979f14990697b4cf20396cf3b928c687cb1c2d0d..e8dde868b65176a38b6b92d1f2079e12714bac23 100644 --- a/README.md +++ b/README.md @@ -3,26 +3,23 @@ # Installation (specific to lab 1 FRTN35: Frequency response analysis) 0. If you run on your personal computer, you *might* need to install Julia. -Download and install Julia v0.6+ from [julialang.org](https://julialang.org/downloads/). +Download and install Julia v1.0+ from [julialang.org](https://julialang.org/downloads/). If you prefer a "batteries included" approach with an IDE, download and install the free version of [Julia Pro](https://juliacomputing.com/products/juliapro.html). 1. Open a terminal 2. Type `mkdir FRTN35_lab1; cd FRTN35_lab1` 3. Paste the following in a terminal ``` -printf 'export JULIA_PKGDIR=/var/tmp/$USER\n' > julialab1 +printf 'export JULIA_DEPOT_PATH=/var/tmp/$USER\n' > julialab1 printf 'export JULIA_EDITOR=gedit\n' >> julialab1 printf 'julia\n' >> julialab1 chmod +x julialab1 ``` (Feel free to choose another text editor if you don't like gedit.) This step only needs to be done once. Henceforth you can start julia with the environment setup by running `./julialab1` in the current directory. 4. Start `./julialab` -5. Install `BallAndBeam.jl` using command `Pkg.clone("https://gitlab.control.lth.se/processes/BallAndBeam.jl.git"); using BallAndBeam` Lots of packages will now be installed, this will take some time. -6. Type `cp(Pkg.dir("BallAndBeam","src","FRTN35_lab1.jl"), "FRTN35_lab1.jl"); edit("FRTN35_lab1.jl")`. The script `FRTN35_lab1.jl` will now open in the chosen text editor, edit it while following the lab manual. If unsure about how a function works, type `?function_name` for help. - -printf 'export JULIA_PKGDIR=/var/tmp/$USER; export JULIA_EDITOR=gedit' > julialab -printf 'julia' >> julialab -chmod +x julialab +5. Install `BallAndBeam.jl` using command `using Pkg; Pkg.add("https://gitlab.control.lth.se/processes/BallAndBeam.jl.git"); using BallAndBeam` Lots of packages will now be installed, this will take some time. +6. Type `cp(joinpath(pathof(BallAndBeam),"src","FRTN35_lab1.jl")), "FRTN35_lab1.jl"); edit("FRTN35_lab1.jl")`. The script `FRTN35_lab1.jl` will now open in the chosen text editor, edit it while following the lab manual. If unsure about how a function works, type `?function_name` for help. +7. Run `Pkg.activate(pathof(BallAndBeam))` to install further required packages. # Documentation diff --git a/REQUIRE b/REQUIRE index bbfa24c275b6d2ad670f5a605eedd702d199d806..ca27e579296d1a5631849568697076b656ec0c32 100644 --- a/REQUIRE +++ b/REQUIRE @@ -1,4 +1,4 @@ -julia 0.7 +julia 1.0 Plots GR ControlSystems diff --git a/src/BallAndBeam.jl b/src/BallAndBeam.jl index b668b9a400e33a5b52e8feaf3390dc346275103d..fcd40a7d1a28d602858e68b74338c9682651f7ee 100644 --- a/src/BallAndBeam.jl +++ b/src/BallAndBeam.jl @@ -1,8 +1,4 @@ using Pkg -installed_packages = Pkg.installed() -if "LabProcesses" ∉ keys(installed_packages) - Pkg.clone("https://gitlab.control.lth.se/processes/LabProcesses.jl.git") -end #__precompile__() diff --git a/src/FRTN35_lab1.jl b/src/FRTN35_lab1.jl index ebafbc7df1c737e2b367cdae0a9aba72434d820e..b0342cc4b85c8b62dcfd34623e074f47e7c0856c 100644 --- a/src/FRTN35_lab1.jl +++ b/src/FRTN35_lab1.jl @@ -1,4 +1,4 @@ -using BallAndBeam, ControlSystems, LabProcesses, Plots, JLD +using BallAndBeam, ControlSystems, ControlSystemIdentification, LabProcesses, Plots, JLD # @load "workspace.jld" # Run this command to restore a saved workspace P = LabProcesses.Beam(bias = 0.) # Replace for BeamSimulator() to run simulations diff --git a/src/arx.jl b/src/arx.jl deleted file mode 100644 index faa71a9d2f0c4be0b32f1e196244776246d40cbc..0000000000000000000000000000000000000000 --- a/src/arx.jl +++ /dev/null @@ -1,182 +0,0 @@ -export toeplitz, getARXregressor, find_na, arx, bopl_confidence, bopl_confidence! - - -## Helper functions -rms(x) = sqrt(mean(x.^2)) -sse(x) = sum(x.^2) -fit(y,yh) = 100 * (1-rms(y-yh)./rms(y-mean(y))); -aic(x,d) = log(sse(x)) + 2d/length(x) - -""" - toeplitz(c::AbstractArray,r::AbstractArray) -Returns a Toeplitz matrix where `c` is the first column and `r` is the first row. -""" -function toeplitz(c::AbstractVector{T},r::AbstractVector{T}) where T - nc = length(c) - nr = length(r) - A = zeros(T, nc, nr) - A[:,1] = c - A[1,:] = r - for i in 2:nr - A[2:end,i] = A[1:end-1,i-1] - end - A -end - -""" - getARXregressor(y::AbstractVector,u::AbstractVecOrMat, na, nb) -Returns a shortened output signal `y` and a regressor matrix `A` such that the least-squares ARX model estimate of order `na,nb` is `y\\A` -Return a regressor matrix used to fit an ARX model on, e.g., the form -`A(z)y = B(z)f(u)` -with output `y` and input `u` where the order of autoregression is `na` and -the order of input moving average is `nb` -# Example -Here we test the model with the Function `f(u) = √(|u|)` -```julia -A = [1,2*0.7*1,1] # A(z) coeffs -B = [10,5] # B(z) coeffs -u = randn(100) # Simulate 100 time steps with Gaussian input -y = filt(B,A,u) -yr,A = getARXregressor(y,u,3,2) # We assume that we know the system order 3,2 -x = A\\yr # Estimate model polynomials -plot([yr A*x], lab=["Signal" "Prediction"]) -``` -For nonlinear ARX-models, see [BasisFunctionExpansions.jl](https://github.com/baggepinnen/BasisFunctionExpansions.jl/) -""" -function getARXregressor(y::AbstractVector,u::AbstractVecOrMat, na, nb) - @assert(length(nb) == size(u,2)) - m = max(na+1,maximum(nb)) - n = length(y) - m+1 - offs = m-na-1 - A = toeplitz(y[offs+na+1:n+na+offs],y[offs+na+1:-1:1]) - y = copy(A[:,1]) - A = A[:,2:end] - for i = 1:length(nb) - offs = m-nb[i]-1 - A = [A toeplitz(u[nb[i]+offs:n+nb[i]+offs-1,i],u[nb[i]+offs:-1:1+offs,i])] - end - return y,A -end - -""" - find_na(y::AbstractVector,n::Int) -Plots the RMSE and AIC For model orders up to `n`. Useful for model selection -""" -function find_na(y::AbstractVector,n::Int) - error = zeros(n,2) - for i = 1:n - w,e = ar(y,i) - error[i,1] = rms(e) - error[i,2] = aic(e,i) - print(i,", ") - end - println("Done") - scatter(error, show=true) -end - -""" - Gtf, Σ = arx(h,y, u, na, nb; λ = 0) -Fit a transfer Function to data using an ARX model. -`nb` and `na` are the orders of the numerator and denominator polynomials. -""" -function arx(h,y::AbstractVector{Float64}, u::AbstractVector{Float64}, na, nb; λ = 0) - na -= 1 - y_train, A = getARXregressor(y,u, na, nb) - - if λ == 0 - w = A\y_train - else - w = (A'A + λ*I)\A'y_train - end - a,b = params2poly(w,na,nb) - model = tf(b,a,h) - Σ = parameter_covariance(y_train, A, w, λ) - return model, Σ -end - -""" - a,b = params2poly(params,na,nb) -""" -function params2poly(w,na,nb) - a = [1; -w[1:na]] - b = w[na+1:end] - a,b -end - -""" - Σ = parameter_covariance(y_train, A, w, λ=0) -""" -function parameter_covariance(y_train, A, w, λ=0) - σ² = var(y_train .- A*w) - iATA = if λ == 0 - inv(A'A) - else - ATA = A'A - ATAλ = factorize(ATA + λ*I) - ATAλ\ATA/ATAλ - end - iATA = (iATA+iATA')/2 - Σ = σ²*iATA + sqrt(eps())*I -end - -""" - bodeconfidence(arxtf::TransferFunction, Σ::Matrix; ω = exp10.(LinRange(0,3,200))) -Plot a bode diagram of a transfer function estimated with [`arx`](@ref) with confidence bounds on magnitude and phase. -""" -bodeconfidence - -@userplot BodeConfidence - -@recipe function BodeConfidence(p::BodeConfidence; ω = exp10.(LinRange(-2,3,200))) - arxtfm = p.args[1] - Σ = p.args[2] - L = cholesky(Hermitian(Σ)) - am, bm = -reverse(denpoly(arxtfm)[1].a[1:end-1]), reverse(arxtfm.matrix[1].num.a) - wm = [am; bm] - na,nb = length(am), length(bm) - mc = 100 - res = map(1:mc) do _ - w = L.L*randn(size(L,1)) .+ wm - a,b = params2poly(w,na,nb) - arxtf = tf(b,a,arxtfm.Ts) - mag, phase, _ = bode(arxtf, ω) - mag[:], phase[:] - end - magmc = hcat(getindex.(res,1)...) - phasemc = hcat(getindex.(res,2)...) - mag = mean(magmc,dims=2)[:] - phase = mean(phasemc,dims=2)[:] - uppermag = getpercentile(magmc,0.95) - lowermag = getpercentile(magmc,0.05) - upperphase = getpercentile(phasemc,0.95) - lowerphase = getpercentile(phasemc,0.05) - - layout := (2,1) - - @series begin - subplot := 1 - title --> "ARX estimate" - ylabel --> "Magnitude" - ribbon := (lowermag, uppermag) - yscale --> :log10 - xscale --> :log10 - fillalpha --> 0.2 - ω, mag - end - @series begin - subplot := 2 - ribbon := (lowerphase, upperphase) - ylabel --> "Phase [deg]" - xlabel --> "Frequency [rad/s]" - xscale --> :log10 - fillalpha --> 0.2 - ω, phase - end - nothing -end - -function getpercentile(mag,p) - uppermag = mapslices(mag, dims=2) do magω - sort(magω)[round(Int,length(magω)*p)] - end -end