[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XEM6P1JECZDRGE01PKBFPQ":3,"skill-same:01M6XEM6P1JECZDRGE01PKBFPQ":53},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":13,"repositoryHtmlUrl":35,"repositoryHomepageUrl":6,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":37,"updatedAt":38,"install":39,"resources":52},"01M6XEM6P1JECZDRGE01PKBFPQ","state-space-linearization",null,"Linearizing nonlinear dynamics around operating points for control design.","Waaaalnut\u002Fskillsbench","Waaaalnut","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F103995656?v=4","01M6XCS9K1V51EY3JMB7DGMX24","01M6XCS9Q4WPW88W62C55G1H44",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fr2r-mpc-control\u002Fenvironment\u002Fskills\u002Fstate-space-linearization\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26],"state","space","state space linearization","design","control","operating","dynamics","for","control design","2026-11-10 10:12:30",false,"---\nname: state-space-linearization\ndescription: Linearizing nonlinear dynamics around operating points for control design.\n---\n\n# State-Space Linearization\n\n## Jacobian Computation\n\nFor nonlinear dynamics dx\u002Fdt = f(x, u), linearize around (x_ref, u_ref):\n\n```\nA = ∂f\u002F∂x |_{x_ref}  (n×n matrix)\nB = ∂f\u002F∂u |_{x_ref}  (n×m matrix)\n```\n\n## Discretization\n\nFor discrete-time control with timestep dt:\n\n**Euler method** (simple, first-order accurate):\n```python\nA_d = I + dt * A_c\nB_d = dt * B_c\n```\n\n**Matrix exponential** (exact for LTI):\n```python\nA_d = expm(A_c * dt)\nB_d = inv(A_c) @ (A_d - I) @ B_c\n```\n\n## For R2R Systems\n\nThe Jacobian depends on current tensions and velocities. Key partial derivatives:\n\n```python\n∂(dT_i\u002Fdt)\u002F∂T_i = -v_i \u002F L\n∂(dT_i\u002Fdt)\u002F∂v_i = EA\u002FL - T_i\u002FL\n∂(dv_i\u002Fdt)\u002F∂T_i = -R²\u002FJ\n∂(dv_i\u002Fdt)\u002F∂u_i = R\u002FJ\n```\n\n## Tips\n\n- Linearize around the reference operating point\n- Update linearization if operating point changes significantly\n- Check stability via eigenvalue analysis\n","# State-Space Linearization\n\n## Jacobian Computation\n\nFor nonlinear dynamics dx\u002Fdt = f(x, u), linearize around (x_ref, u_ref):\n\n```\nA = ∂f\u002F∂x |_{x_ref}  (n×n matrix)\nB = ∂f\u002F∂u |_{x_ref}  (n×m matrix)\n```\n\n## Discretization\n\nFor discrete-time control with timestep dt:\n\n**Euler method** (simple, first-order accurate):\n```python\nA_d = I + dt * A_c\nB_d = dt * B_c\n```\n\n**Matrix exponential** (exact for LTI):\n```python\nA_d = expm(A_c * dt)\nB_d = inv(A_c) @ (A_d - I) @ B_c\n```\n\n## For R2R Systems\n\nThe Jacobian depends on current tensions and velocities. Key partial derivatives:\n\n```python\n∂(dT_i\u002Fdt)\u002F∂T_i = -v_i \u002F L\n∂(dT_i\u002Fdt)\u002F∂v_i = EA\u002FL - T_i\u002FL\n∂(dv_i\u002Fdt)\u002F∂T_i = -R²\u002FJ\n∂(dv_i\u002Fdt)\u002F∂u_i = R\u002FJ\n```\n\n## Tips\n\n- Linearize around the reference operating point\n- Update linearization if operating point changes significantly\n- Check stability via eigenvalue analysis\n",{"name":5,"description":7},"main","7eeb258ada72b7f58119b0e7a2c00ea89d9beedd","tasks\u002Fr2r-mpc-control\u002Fenvironment\u002Fskills\u002Fstate-space-linearization","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench","https:\u002F\u002Fgithub.com\u002FWaaaalnut","student of Zhejiang University","2026-04-21 23:16:23",{"source":8,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add Waaaalnut\u002Fskillsbench --skill state-space-linearization",{"tool":45,"command":46},"bunx","bunx skills add Waaaalnut\u002Fskillsbench --skill state-space-linearization",{"tool":48,"command":49},"pnpm","pnpm dlx skills add Waaaalnut\u002Fskillsbench --skill state-space-linearization","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fr2r-mpc-control\u002Fenvironment\u002Fskills\u002Fstate-space-linearization\u002FSKILL.md",true,[],[54,68,83,111,133,151],{"skillNo":55,"name":56,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":64,"publishedAt":27},"01M6XEWMJ6VY3ZC53MPDCPG3GH","data-reconciliation","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fxlsx-recover-data\u002Fenvironment\u002Fskills\u002Fdata-reconciliation\u002FSKILL.md",[59],{"categoryNo":60,"categoryName":61,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[65,66,67],"data reconciliation","reconciliation","data",{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":27},"01M6XEW8MNPMF1KRXV6ATGFRQF","speech-to-text","Transcribe video to timestamped text using Whisper tiny model (pre-installed).","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-tutorial-indexer\u002Fenvironment\u002Fskills\u002Fspeech-to-text\u002FSKILL.md",[],[75,76,77,78,79,80,81,82],"speech","text","speech to text","transcribe video","whisper","model","Video","transcribe",{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":94,"publishedAt":27},"01M6XEW3FQZP0T1RKQQJFXVY9T","video-processor","Process videos by removing segments and concatenating remaining parts. Use when you need to remove detected pauses\u002Fopenings from videos, create highlight reels, or batch process segment removals using ffmpeg filter_complex.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fvideo-processor\u002FSKILL.md",[89],{"categoryNo":90,"categoryName":91,"taxonomyType":92,"taxonomyTypeDesc":93},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[81,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],"processor","video processor","batch","create","reels","when","parts","segments","process","videos","you","segment","filter","ffmpeg","use","remove",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":118,"publishedAt":27},"01M6XEVXJ5KZ0NTY3XZKRY4AS1","silence-detector","Detect initial silence segments in audio\u002Fvideo using energy-based analysis. Use when you need to find low-energy periods at the start of recordings (title slides, setup time, pre-roll silence).","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fsilence-detector\u002FSKILL.md",[117],{"categoryNo":90,"categoryName":91,"taxonomyType":92,"taxonomyTypeDesc":93},[119,120,121,122,100,105,123,124,125,126,127,102,128,129,81,130,131,132,109],"detector","silence detector","title","slides","time","energy","at","recordings","detect","find","Audio","analysis","start","setup",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":139,"publishedAt":27},"01M6XEVT3NGRN1FT7JPMAPXS6M","segment-combiner","Combine multiple segment detection results into a unified list. Use when you need to merge segments from different detectors, prepare removal lists for video processing, or consolidate detection outputs.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Fsegment-combiner\u002FSKILL.md",[],[106,140,81,141,142,143,144,25,100,145,146,102,105,147,148,109,149,150],"segment combiner","detection","prepare","merge","video processing","outputs","combine","processing","consolidate","results","list",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":160,"publishedAt":27},"01M6XEVMPVASGS2KX86QK4FMT7","report-generator","Generate compression reports for video processing. Use when you need to create structured JSON reports with duration statistics, compression ratios, and segment details after video processing.","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fvideo-silence-remover\u002Fenvironment\u002Fskills\u002Freport-generator\u002FSKILL.md",[157],{"categoryNo":158,"categoryName":159,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000034","行政与办公人员",[161,162,163,106,100,25,105,164,147,165,166,167,109,144,168,81,169,170,98],"generator","report generator","report","with","statistics","structured","reports","json","compression","generate"]