[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XE90PR0J4TPESC45HF6WSA":3,"skill-same:01M6XE90PR0J4TPESC45HF6WSA":66},{"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":27,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":13,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6XE90PR0J4TPESC45HF6WSA","excitation-signal-design",null,"Design effective excitation signals (step tests) for system identification and parameter estimation in control systems.","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\u002Fhvac-control\u002Fenvironment\u002Fskills\u002Fexcitation-signal-design\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[28,29,30,31,32,33,34,35,36,37,38,39],"design","signal","excitation signal design","system","estimation","signals","control systems","control","tests","systems","identification","for","2026-11-10 10:12:30",false,"---\nname: excitation-signal-design\ndescription: Design effective excitation signals (step tests) for system identification and parameter estimation in control systems.\n---\n\n# Excitation Signal Design for System Identification\n\n## Overview\n\nWhen identifying the dynamics of an unknown system, you must excite the system with a known input and observe its response. This skill describes how to design effective excitation signals for parameter estimation.\n\n## Step Test Method\n\nThe simplest excitation signal for first-order systems is a step test:\n\n1. **Start at steady state**: Ensure the system is stable at a known operating point\n2. **Apply a step input**: Change the input from zero to a constant value\n3. **Hold for sufficient duration**: Wait long enough to observe the full response\n4. **Record the response**: Capture input and output data at regular intervals\n\n## Duration Guidelines\n\nThe test should run long enough to capture the system dynamics:\n\n- **Minimum**: At least 2-3 time constants to see the response shape\n- **Recommended**: 3-5 time constants for accurate parameter estimation\n- **Rule of thumb**: If the output appears to have settled, you've collected enough data\n\n## Sample Rate Selection\n\nChoose a sample rate that captures the transient behavior:\n\n- Too slow: Miss important dynamics during the rise phase\n- Too fast: Excessive data without added information\n- Good practice: At least 10-20 samples per time constant\n\n## Data Collection\n\nDuring the step test, record:\n- Time (from start of test)\n- Output measurement (with sensor noise)\n- Input command\n\n```python\n# Example data collection pattern\ndata = []\nfor step in range(num_steps):\n    result = system.step(input_value)\n    data.append({\n        \"time\": result[\"time\"],\n        \"output\": result[\"output\"],\n        \"input\": result[\"input\"]\n    })\n```\n\n## Expected Response Shape\n\nFor a first-order system, the step response follows an exponential curve:\n- Initial: Output at starting value\n- Rising: Exponential approach toward new steady state\n- Final: Asymptotically approaches steady-state value\n\nThe response follows: `y(t) = y_initial + K*u*(1 - exp(-t\u002Ftau))`\n\nWhere K is the process gain and tau is the time constant.\n\n## Tips\n\n- **Sufficient duration**: Cutting the test short means incomplete data for fitting\n- **Moderate input**: Use an input level that produces a measurable response without saturating\n- **Noise is normal**: Real sensors have measurement noise; don't over-smooth the data\n- **One good test**: A single well-executed step test often provides sufficient data\n","# Excitation Signal Design for System Identification\n\n## Overview\n\nWhen identifying the dynamics of an unknown system, you must excite the system with a known input and observe its response. This skill describes how to design effective excitation signals for parameter estimation.\n\n## Step Test Method\n\nThe simplest excitation signal for first-order systems is a step test:\n\n1. **Start at steady state**: Ensure the system is stable at a known operating point\n2. **Apply a step input**: Change the input from zero to a constant value\n3. **Hold for sufficient duration**: Wait long enough to observe the full response\n4. **Record the response**: Capture input and output data at regular intervals\n\n## Duration Guidelines\n\nThe test should run long enough to capture the system dynamics:\n\n- **Minimum**: At least 2-3 time constants to see the response shape\n- **Recommended**: 3-5 time constants for accurate parameter estimation\n- **Rule of thumb**: If the output appears to have settled, you've collected enough data\n\n## Sample Rate Selection\n\nChoose a sample rate that captures the transient behavior:\n\n- Too slow: Miss important dynamics during the rise phase\n- Too fast: Excessive data without added information\n- Good practice: At least 10-20 samples per time constant\n\n## Data Collection\n\nDuring the step test, record:\n- Time (from start of test)\n- Output measurement (with sensor noise)\n- Input command\n\n```python\n# Example data collection pattern\ndata = []\nfor step in range(num_steps):\n    result = system.step(input_value)\n    data.append({\n        \"time\": result[\"time\"],\n        \"output\": result[\"output\"],\n        \"input\": result[\"input\"]\n    })\n```\n\n## Expected Response Shape\n\nFor a first-order system, the step response follows an exponential curve:\n- Initial: Output at starting value\n- Rising: Exponential approach toward new steady state\n- Final: Asymptotically approaches steady-state value\n\nThe response follows: `y(t) = y_initial + K*u*(1 - exp(-t\u002Ftau))`\n\nWhere K is the process gain and tau is the time constant.\n\n## Tips\n\n- **Sufficient duration**: Cutting the test short means incomplete data for fitting\n- **Moderate input**: Use an input level that produces a measurable response without saturating\n- **Noise is normal**: Real sensors have measurement noise; don't over-smooth the data\n- **One good test**: A single well-executed step test often provides sufficient data\n",{"name":5,"description":7},"main","7eeb258ada72b7f58119b0e7a2c00ea89d9beedd","tasks\u002Fhvac-control\u002Fenvironment\u002Fskills\u002Fexcitation-signal-design","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":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add Waaaalnut\u002Fskillsbench --skill excitation-signal-design",{"tool":58,"command":59},"bunx","bunx skills add Waaaalnut\u002Fskillsbench --skill excitation-signal-design",{"tool":61,"command":62},"pnpm","pnpm dlx skills add Waaaalnut\u002Fskillsbench --skill excitation-signal-design","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fhvac-control\u002Fenvironment\u002Fskills\u002Fexcitation-signal-design\u002FSKILL.md",true,[],[67,79,94,120,142,160],{"skillNo":68,"name":69,"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":70,"categories":71,"keywords":75,"publishedAt":40},"01M6XEWMJ6VY3ZC53MPDCPG3GH","data-reconciliation","https:\u002F\u002Fgithub.com\u002FWaaaalnut\u002Fskillsbench\u002Fblob\u002Fmain\u002Ftasks\u002Fxlsx-recover-data\u002Fenvironment\u002Fskills\u002Fdata-reconciliation\u002FSKILL.md",[72],{"categoryNo":73,"categoryName":74,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000033","数据分析师",[76,77,78],"data reconciliation","reconciliation","data",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":40},"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",[],[86,87,88,89,90,91,92,93],"speech","text","speech to text","transcribe video","whisper","model","Video","transcribe",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":103,"publishedAt":40},"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",[100],{"categoryNo":101,"categoryName":102,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",[92,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119],"processor","video processor","batch","create","reels","when","parts","segments","process","videos","you","segment","filter","ffmpeg","use","remove",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":127,"publishedAt":40},"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",[126],{"categoryNo":101,"categoryName":102,"taxonomyType":20,"taxonomyTypeDesc":21},[128,129,130,131,109,114,132,133,134,135,136,111,137,138,92,139,140,141,118],"detector","silence detector","title","slides","time","energy","at","recordings","detect","find","Audio","analysis","start","setup",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":40},"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",[],[115,149,92,150,151,152,153,39,109,154,155,111,114,156,157,118,158,159],"segment combiner","detection","prepare","merge","video processing","outputs","combine","processing","consolidate","results","list",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":169,"publishedAt":40},"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",[166],{"categoryNo":167,"categoryName":168,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000034","行政与办公人员",[170,171,172,115,109,39,114,173,156,174,175,176,118,153,177,92,178,179,107],"generator","report generator","report","with","statistics","structured","reports","json","compression","generate"]