Add analysis about pure zeros/poles

This commit is contained in:
Thomas Dehaeze 2021-04-28 15:59:35 +02:00
parent b60d6e3394
commit a113af6739
23 changed files with 6037 additions and 95 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,198 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="170.236pt" height="141.984pt" viewBox="0 0 170.236 141.984" version="1.2">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 7.484375 -5.28125 C 7.484375 -6.046875 6.828125 -6.78125 5.53125 -6.78125 L 2.3125 -6.78125 C 2.125 -6.78125 2.015625 -6.78125 2.015625 -6.59375 C 2.015625 -6.46875 2.109375 -6.46875 2.296875 -6.46875 C 2.4375 -6.46875 2.609375 -6.453125 2.734375 -6.453125 C 2.890625 -6.421875 2.953125 -6.40625 2.953125 -6.296875 C 2.953125 -6.25 2.9375 -6.21875 2.90625 -6.109375 L 1.578125 -0.78125 C 1.484375 -0.390625 1.453125 -0.3125 0.671875 -0.3125 C 0.5 -0.3125 0.390625 -0.3125 0.390625 -0.125 C 0.390625 0 0.515625 0 0.546875 0 L 1.8125 -0.03125 L 2.4375 -0.015625 C 2.65625 -0.015625 2.875 0 3.078125 0 C 3.15625 0 3.28125 0 3.28125 -0.203125 C 3.28125 -0.3125 3.1875 -0.3125 3 -0.3125 C 2.640625 -0.3125 2.359375 -0.3125 2.359375 -0.484375 C 2.359375 -0.546875 2.375 -0.59375 2.390625 -0.65625 L 3 -3.140625 L 4.6875 -3.140625 C 6.109375 -3.140625 7.484375 -4.171875 7.484375 -5.28125 Z M 6.5625 -5.515625 C 6.5625 -5.125 6.359375 -4.28125 5.96875 -3.921875 C 5.484375 -3.46875 4.875 -3.390625 4.4375 -3.390625 L 3.046875 -3.390625 L 3.71875 -6.09375 C 3.8125 -6.4375 3.828125 -6.46875 4.25 -6.46875 L 5.203125 -6.46875 C 6.03125 -6.46875 6.5625 -6.203125 6.5625 -5.515625 Z M 6.5625 -5.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 3.921875 -1.53125 C 3.921875 -1.890625 3.734375 -2.140625 3.625 -2.265625 C 3.359375 -2.546875 3.0625 -2.59375 2.625 -2.671875 C 2.265625 -2.765625 1.875 -2.828125 1.875 -3.28125 C 1.875 -3.5625 2.109375 -4.171875 2.984375 -4.171875 C 3.234375 -4.171875 3.734375 -4.09375 3.875 -3.703125 C 3.609375 -3.703125 3.40625 -3.484375 3.40625 -3.265625 C 3.40625 -3.125 3.5 -2.96875 3.703125 -2.96875 C 3.921875 -2.96875 4.171875 -3.140625 4.171875 -3.53125 C 4.171875 -3.984375 3.734375 -4.390625 2.984375 -4.390625 C 1.671875 -4.390625 1.3125 -3.375 1.3125 -2.9375 C 1.3125 -2.15625 2.046875 -2.015625 2.328125 -1.953125 C 2.84375 -1.859375 3.359375 -1.75 3.359375 -1.203125 C 3.359375 -0.9375 3.140625 -0.109375 1.9375 -0.109375 C 1.8125 -0.109375 1.046875 -0.109375 0.8125 -0.640625 C 1.1875 -0.578125 1.4375 -0.890625 1.4375 -1.15625 C 1.4375 -1.390625 1.28125 -1.515625 1.078125 -1.515625 C 0.8125 -1.515625 0.515625 -1.296875 0.515625 -0.859375 C 0.515625 -0.28125 1.078125 0.109375 1.9375 0.109375 C 3.546875 0.109375 3.921875 -1.09375 3.921875 -1.53125 Z M 3.921875 -1.53125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 10.390625 -6.671875 C 10.390625 -6.703125 10.359375 -6.78125 10.28125 -6.78125 C 10.046875 -6.78125 9.765625 -6.75 9.515625 -6.75 C 9.171875 -6.75 8.8125 -6.78125 8.484375 -6.78125 C 8.421875 -6.78125 8.296875 -6.78125 8.296875 -6.59375 C 8.296875 -6.484375 8.390625 -6.46875 8.4375 -6.46875 C 8.6875 -6.453125 9.03125 -6.375 9.03125 -6.078125 C 9.03125 -5.96875 8.984375 -5.890625 8.90625 -5.75 L 6.21875 -1.078125 L 5.859375 -6 C 5.84375 -6.203125 5.828125 -6.453125 6.546875 -6.46875 C 6.71875 -6.46875 6.8125 -6.46875 6.8125 -6.671875 C 6.8125 -6.765625 6.703125 -6.78125 6.671875 -6.78125 C 6.265625 -6.78125 5.859375 -6.75 5.453125 -6.75 C 5.234375 -6.75 4.640625 -6.78125 4.421875 -6.78125 C 4.359375 -6.78125 4.234375 -6.78125 4.234375 -6.578125 C 4.234375 -6.46875 4.328125 -6.46875 4.46875 -6.46875 C 4.90625 -6.46875 4.96875 -6.40625 4.984375 -6.21875 L 5.046875 -5.453125 L 2.546875 -1.078125 L 2.15625 -6.109375 C 2.15625 -6.234375 2.15625 -6.453125 2.921875 -6.46875 C 3.015625 -6.46875 3.125 -6.46875 3.125 -6.671875 C 3.125 -6.78125 2.984375 -6.78125 2.984375 -6.78125 C 2.59375 -6.78125 2.171875 -6.75 1.765625 -6.75 C 1.421875 -6.75 1.0625 -6.78125 0.71875 -6.78125 C 0.671875 -6.78125 0.546875 -6.78125 0.546875 -6.59375 C 0.546875 -6.46875 0.640625 -6.46875 0.796875 -6.46875 C 1.296875 -6.46875 1.296875 -6.375 1.3125 -6.109375 L 1.765625 -0.046875 C 1.78125 0.140625 1.78125 0.21875 1.921875 0.21875 C 2.046875 0.21875 2.078125 0.15625 2.15625 0.015625 L 5.078125 -5.046875 L 5.453125 -0.046875 C 5.46875 0.171875 5.484375 0.21875 5.609375 0.21875 C 5.734375 0.21875 5.796875 0.125 5.84375 0.03125 L 9.09375 -5.625 C 9.34375 -6.0625 9.578125 -6.421875 10.203125 -6.46875 C 10.296875 -6.484375 10.390625 -6.484375 10.390625 -6.671875 Z M 10.390625 -6.671875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 7.125 -0.203125 C 7.125 -0.3125 7.03125 -0.3125 6.84375 -0.3125 C 6.484375 -0.3125 6.203125 -0.3125 6.203125 -0.484375 C 6.203125 -0.546875 6.21875 -0.59375 6.234375 -0.65625 L 7.578125 -6.015625 C 7.65625 -6.375 7.671875 -6.46875 8.40625 -6.46875 C 8.65625 -6.46875 8.734375 -6.46875 8.734375 -6.671875 C 8.734375 -6.78125 8.625 -6.78125 8.609375 -6.78125 L 7.328125 -6.75 L 6.046875 -6.78125 C 5.96875 -6.78125 5.859375 -6.78125 5.859375 -6.578125 C 5.859375 -6.46875 5.953125 -6.46875 6.140625 -6.46875 C 6.140625 -6.46875 6.34375 -6.46875 6.515625 -6.453125 C 6.703125 -6.421875 6.78125 -6.421875 6.78125 -6.296875 C 6.78125 -6.25 6.78125 -6.234375 6.75 -6.109375 L 6.15625 -3.6875 L 3.125 -3.6875 L 3.703125 -6.015625 C 3.796875 -6.375 3.828125 -6.46875 4.546875 -6.46875 C 4.796875 -6.46875 4.875 -6.46875 4.875 -6.671875 C 4.875 -6.78125 4.765625 -6.78125 4.75 -6.78125 L 3.46875 -6.75 L 2.1875 -6.78125 C 2.109375 -6.78125 2 -6.78125 2 -6.578125 C 2 -6.46875 2.09375 -6.46875 2.28125 -6.46875 C 2.28125 -6.46875 2.484375 -6.46875 2.65625 -6.453125 C 2.84375 -6.421875 2.921875 -6.421875 2.921875 -6.296875 C 2.921875 -6.25 2.921875 -6.21875 2.890625 -6.109375 L 1.5625 -0.78125 C 1.453125 -0.390625 1.4375 -0.3125 0.65625 -0.3125 C 0.46875 -0.3125 0.390625 -0.3125 0.390625 -0.109375 C 0.390625 0 0.53125 0 0.53125 0 L 1.78125 -0.03125 L 2.421875 -0.015625 C 2.640625 -0.015625 2.859375 0 3.0625 0 C 3.140625 0 3.265625 0 3.265625 -0.203125 C 3.265625 -0.3125 3.171875 -0.3125 2.984375 -0.3125 C 2.625 -0.3125 2.34375 -0.3125 2.34375 -0.484375 C 2.34375 -0.546875 2.359375 -0.59375 2.375 -0.65625 L 3.046875 -3.375 L 6.078125 -3.375 L 5.390625 -0.640625 C 5.28125 -0.3125 5.09375 -0.3125 4.484375 -0.3125 C 4.328125 -0.3125 4.25 -0.3125 4.25 -0.109375 C 4.25 0 4.390625 0 4.390625 0 L 5.640625 -0.03125 L 6.28125 -0.015625 C 6.5 -0.015625 6.71875 0 6.921875 0 C 7 0 7.125 0 7.125 -0.203125 Z M 7.125 -0.203125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 6.859375 -3.6875 C 6.859375 -4.234375 6.59375 -4.390625 6.421875 -4.390625 C 6.171875 -4.390625 5.921875 -4.125 5.921875 -3.90625 C 5.921875 -3.78125 5.984375 -3.71875 6.078125 -3.640625 C 6.1875 -3.53125 6.421875 -3.28125 6.421875 -2.796875 C 6.421875 -2.453125 6.140625 -1.484375 5.890625 -0.984375 C 5.625 -0.453125 5.28125 -0.109375 4.796875 -0.109375 C 4.328125 -0.109375 4.0625 -0.40625 4.0625 -0.96875 C 4.0625 -1.25 4.125 -1.5625 4.171875 -1.703125 L 4.578125 -3.359375 C 4.640625 -3.578125 4.734375 -3.953125 4.734375 -4.015625 C 4.734375 -4.1875 4.59375 -4.28125 4.4375 -4.28125 C 4.328125 -4.28125 4.140625 -4.203125 4.078125 -4 C 4.046875 -3.921875 3.578125 -2.03125 3.515625 -1.78125 C 3.4375 -1.484375 3.421875 -1.296875 3.421875 -1.125 C 3.421875 -1.015625 3.421875 -0.984375 3.4375 -0.9375 C 3.203125 -0.421875 2.90625 -0.109375 2.515625 -0.109375 C 1.71875 -0.109375 1.71875 -0.84375 1.71875 -1.015625 C 1.71875 -1.328125 1.78125 -1.71875 2.25 -2.9375 C 2.34375 -3.234375 2.40625 -3.375 2.40625 -3.578125 C 2.40625 -4.015625 2.078125 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.859375 1.21875 -4.171875 1.5625 -4.171875 C 1.65625 -4.171875 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.59375 1.703125 -3.3125 1.640625 -3.140625 C 1.203125 -1.96875 1.078125 -1.515625 1.078125 -1.140625 C 1.078125 -0.234375 1.75 0.109375 2.484375 0.109375 C 2.65625 0.109375 3.125 0.109375 3.515625 -0.578125 C 3.78125 0.046875 4.46875 0.109375 4.765625 0.109375 C 5.5 0.109375 5.9375 -0.515625 6.203125 -1.109375 C 6.53125 -1.890625 6.859375 -3.21875 6.859375 -3.6875 Z M 6.859375 -3.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-6">
<path style="stroke:none;" d="M 5.390625 -1.421875 C 5.390625 -1.515625 5.296875 -1.515625 5.265625 -1.515625 C 5.171875 -1.515625 5.15625 -1.484375 5.125 -1.34375 C 4.984375 -0.78125 4.796875 -0.109375 4.390625 -0.109375 C 4.171875 -0.109375 4.078125 -0.234375 4.078125 -0.5625 C 4.078125 -0.78125 4.203125 -1.25 4.28125 -1.59375 L 4.546875 -2.671875 C 4.578125 -2.8125 4.6875 -3.1875 4.71875 -3.34375 C 4.765625 -3.578125 4.875 -3.953125 4.875 -4.015625 C 4.875 -4.1875 4.734375 -4.28125 4.578125 -4.28125 C 4.53125 -4.28125 4.28125 -4.265625 4.203125 -3.921875 L 3.453125 -0.9375 C 3.4375 -0.90625 3.046875 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.5625 1.703125 -0.921875 C 1.703125 -1.484375 1.984375 -2.265625 2.25 -2.953125 C 2.359375 -3.25 2.40625 -3.390625 2.40625 -3.578125 C 2.40625 -4.015625 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.8125 -3.796875 1.1875 -4.171875 1.5625 -4.171875 C 1.65625 -4.171875 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.609375 1.703125 -3.3125 1.640625 -3.171875 C 1.28125 -2.1875 1.078125 -1.5625 1.078125 -1.078125 C 1.078125 -0.140625 1.75 0.109375 2.296875 0.109375 C 2.953125 0.109375 3.296875 -0.34375 3.46875 -0.5625 C 3.578125 -0.15625 3.921875 0.109375 4.359375 0.109375 C 4.703125 0.109375 4.9375 -0.125 5.09375 -0.4375 C 5.265625 -0.796875 5.390625 -1.421875 5.390625 -1.421875 Z M 5.390625 -1.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-7">
<path style="stroke:none;" d="M 4.640625 -3.6875 C 4.640625 -4.234375 4.390625 -4.390625 4.203125 -4.390625 C 3.953125 -4.390625 3.71875 -4.125 3.71875 -3.90625 C 3.71875 -3.78125 3.765625 -3.71875 3.875 -3.609375 C 4.09375 -3.40625 4.21875 -3.15625 4.21875 -2.796875 C 4.21875 -2.375 3.609375 -0.109375 2.453125 -0.109375 C 1.9375 -0.109375 1.71875 -0.453125 1.71875 -0.96875 C 1.71875 -1.53125 1.984375 -2.25 2.296875 -3.078125 C 2.359375 -3.25 2.40625 -3.390625 2.40625 -3.578125 C 2.40625 -4.015625 2.09375 -4.390625 1.59375 -4.390625 C 0.671875 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.859375 -3.9375 1.28125 -4.171875 1.5625 -4.171875 C 1.640625 -4.171875 1.8125 -4.171875 1.8125 -3.84375 C 1.8125 -3.609375 1.71875 -3.328125 1.640625 -3.15625 C 1.203125 -2 1.078125 -1.546875 1.078125 -1.125 C 1.078125 -0.046875 1.953125 0.109375 2.40625 0.109375 C 4.078125 0.109375 4.640625 -3.171875 4.640625 -3.6875 Z M 4.640625 -3.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-8">
<path style="stroke:none;" d="M 4.3125 -1.421875 C 4.3125 -1.46875 4.28125 -1.515625 4.203125 -1.515625 C 4.109375 -1.515625 4.09375 -1.453125 4.0625 -1.390625 C 3.828125 -0.75 3.1875 -0.5625 2.875 -0.5625 C 2.671875 -0.5625 2.484375 -0.609375 2.28125 -0.6875 C 1.9375 -0.8125 1.796875 -0.859375 1.59375 -0.859375 C 1.59375 -0.859375 1.40625 -0.859375 1.3125 -0.828125 C 1.859375 -1.40625 2.140625 -1.640625 2.5 -1.953125 C 2.5 -1.953125 3.109375 -2.484375 3.46875 -2.84375 C 4.421875 -3.765625 4.640625 -4.25 4.640625 -4.28125 C 4.640625 -4.390625 4.53125 -4.390625 4.53125 -4.390625 C 4.453125 -4.390625 4.421875 -4.359375 4.375 -4.28125 C 4.078125 -3.796875 3.875 -3.640625 3.625 -3.640625 C 3.390625 -3.640625 3.28125 -3.796875 3.125 -3.953125 C 2.9375 -4.1875 2.765625 -4.390625 2.4375 -4.390625 C 1.703125 -4.390625 1.234375 -3.46875 1.234375 -3.25 C 1.234375 -3.203125 1.265625 -3.140625 1.359375 -3.140625 C 1.453125 -3.140625 1.46875 -3.1875 1.484375 -3.25 C 1.671875 -3.703125 2.25 -3.71875 2.328125 -3.71875 C 2.546875 -3.71875 2.734375 -3.65625 2.953125 -3.578125 C 3.359375 -3.421875 3.46875 -3.421875 3.71875 -3.421875 C 3.359375 -3 2.53125 -2.28125 2.34375 -2.125 L 1.453125 -1.296875 C 0.78125 -0.625 0.421875 -0.0625 0.421875 0.015625 C 0.421875 0.109375 0.546875 0.109375 0.546875 0.109375 C 0.625 0.109375 0.640625 0.09375 0.703125 -0.015625 C 0.9375 -0.359375 1.234375 -0.640625 1.546875 -0.640625 C 1.78125 -0.640625 1.875 -0.546875 2.125 -0.265625 C 2.296875 -0.046875 2.46875 0.109375 2.765625 0.109375 C 3.734375 0.109375 4.3125 -1.15625 4.3125 -1.421875 Z M 4.3125 -1.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 3.28125 0 L 3.28125 -0.25 L 3.015625 -0.25 C 2.328125 -0.25 2.328125 -0.34375 2.328125 -0.5625 L 2.328125 -4.40625 C 2.328125 -4.59375 2.3125 -4.609375 2.109375 -4.609375 C 1.671875 -4.171875 1.046875 -4.15625 0.75 -4.15625 L 0.75 -3.90625 C 0.921875 -3.90625 1.375 -3.90625 1.765625 -4.109375 L 1.765625 -0.5625 C 1.765625 -0.34375 1.765625 -0.25 1.0625 -0.25 L 0.8125 -0.25 L 0.8125 0 L 2.046875 -0.03125 Z M 3.28125 0 "/>
</symbol>
<symbol overflow="visible" id="glyph1-2">
<path style="stroke:none;" d="M 3.5 -1.265625 L 3.265625 -1.265625 C 3.25 -1.109375 3.171875 -0.703125 3.09375 -0.625 C 3.03125 -0.59375 2.5 -0.59375 2.40625 -0.59375 L 1.125 -0.59375 C 1.859375 -1.234375 2.09375 -1.421875 2.515625 -1.75 C 3.03125 -2.171875 3.5 -2.59375 3.5 -3.25 C 3.5 -4.09375 2.765625 -4.609375 1.875 -4.609375 C 1.015625 -4.609375 0.4375 -4 0.4375 -3.359375 C 0.4375 -3.015625 0.734375 -2.96875 0.8125 -2.96875 C 0.96875 -2.96875 1.171875 -3.09375 1.171875 -3.34375 C 1.171875 -3.46875 1.125 -3.71875 0.765625 -3.71875 C 0.984375 -4.203125 1.453125 -4.359375 1.78125 -4.359375 C 2.46875 -4.359375 2.828125 -3.8125 2.828125 -3.25 C 2.828125 -2.65625 2.40625 -2.171875 2.171875 -1.921875 L 0.5 -0.265625 C 0.4375 -0.203125 0.4375 -0.1875 0.4375 0 L 3.296875 0 Z M 3.5 -1.265625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph2-1">
<path style="stroke:none;" d="M 3.28125 2.375 C 3.28125 2.34375 3.28125 2.328125 3.109375 2.15625 C 1.875 0.90625 1.5625 -0.96875 1.5625 -2.484375 C 1.5625 -4.203125 1.9375 -5.9375 3.15625 -7.171875 C 3.28125 -7.296875 3.28125 -7.3125 3.28125 -7.34375 C 3.28125 -7.40625 3.25 -7.4375 3.1875 -7.4375 C 3.078125 -7.4375 2.1875 -6.765625 1.609375 -5.5 C 1.09375 -4.421875 0.984375 -3.3125 0.984375 -2.484375 C 0.984375 -1.703125 1.09375 -0.5 1.640625 0.609375 C 2.234375 1.828125 3.078125 2.484375 3.1875 2.484375 C 3.25 2.484375 3.28125 2.453125 3.28125 2.375 Z M 3.28125 2.375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-2">
<path style="stroke:none;" d="M 2.875 -2.484375 C 2.875 -3.25 2.765625 -4.453125 2.21875 -5.578125 C 1.625 -6.796875 0.765625 -7.4375 0.671875 -7.4375 C 0.609375 -7.4375 0.5625 -7.40625 0.5625 -7.34375 C 0.5625 -7.3125 0.5625 -7.296875 0.75 -7.109375 C 1.71875 -6.125 2.296875 -4.546875 2.296875 -2.484375 C 2.296875 -0.78125 1.921875 0.96875 0.6875 2.21875 C 0.5625 2.328125 0.5625 2.34375 0.5625 2.375 C 0.5625 2.4375 0.609375 2.484375 0.671875 2.484375 C 0.765625 2.484375 1.65625 1.8125 2.25 0.546875 C 2.75 -0.546875 2.875 -1.640625 2.875 -2.484375 Z M 2.875 -2.484375 "/>
</symbol>
<symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph3-1">
<path style="stroke:none;" d="M 11.53125 -4.265625 C 11.53125 -4.578125 11.265625 -4.578125 11 -4.578125 L 6.46875 -4.578125 L 6.46875 -9.125 C 6.46875 -9.359375 6.46875 -9.65625 6.171875 -9.65625 C 5.859375 -9.65625 5.859375 -9.375 5.859375 -9.125 L 5.859375 -4.578125 L 1.3125 -4.578125 C 1.078125 -4.578125 0.78125 -4.578125 0.78125 -4.28125 C 0.78125 -3.984375 1.0625 -3.984375 1.3125 -3.984375 L 5.859375 -3.984375 L 5.859375 0.5625 C 5.859375 0.8125 5.859375 1.09375 6.15625 1.09375 C 6.46875 1.09375 6.46875 0.828125 6.46875 0.5625 L 6.46875 -3.984375 L 11 -3.984375 C 11.25 -3.984375 11.53125 -3.984375 11.53125 -4.265625 Z M 11.53125 -4.265625 "/>
</symbol>
<symbol overflow="visible" id="glyph4-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph4-1">
<path style="stroke:none;" d="M 6.890625 -2.484375 C 6.890625 -2.671875 6.703125 -2.671875 6.5625 -2.671875 L 1.15625 -2.671875 C 1.015625 -2.671875 0.828125 -2.671875 0.828125 -2.484375 C 0.828125 -2.28125 1.015625 -2.28125 1.15625 -2.28125 L 6.5625 -2.28125 C 6.703125 -2.28125 6.890625 -2.28125 6.890625 -2.484375 Z M 6.890625 -2.484375 "/>
</symbol>
</g>
<clipPath id="clip1">
<path d="M 67 111 L 103 111 L 103 141.660156 L 67 141.660156 Z M 67 111 "/>
</clipPath>
<clipPath id="clip2">
<path d="M 89 110 L 123 110 L 123 141.660156 L 89 141.660156 Z M 89 110 "/>
</clipPath>
<clipPath id="clip3">
<path d="M 148 23 L 169.476562 23 L 169.476562 55 L 148 55 Z M 148 23 "/>
</clipPath>
<clipPath id="clip4">
<path d="M 148 57 L 169.476562 57 L 169.476562 90 L 148 90 Z M 148 57 "/>
</clipPath>
</defs>
<g id="surface1">
<path style="fill-rule:nonzero;fill:rgb(79.998779%,79.998779%,79.998779%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,2.98883;stroke-miterlimit:10;" d="M -63.78048 -42.520877 L 63.781634 -42.520877 L 63.781634 42.519225 L -63.78048 42.519225 Z M -63.78048 -42.520877 " transform="matrix(0.995532,0,0,-0.995532,84.737707,60.657381)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="73.147721" y="11.550766"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="79.515145" y="13.039086"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="83.964178" y="11.550766"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="87.821865" y="11.550766"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="92.471001" y="11.550766"/>
</g>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 9.919895 7.334682 L 43.939075 7.334682 L 43.939075 35.683998 L 9.919895 35.683998 Z M 9.919895 7.334682 " transform="matrix(0.995532,0,0,-0.995532,84.737707,60.657381)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="98.457135" y="41.72435"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="107.824098" y="43.212671"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="112.273131" y="41.72435"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="116.130818" y="41.72435"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="120.779953" y="41.72435"/>
</g>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 9.919895 -27.076876 L 43.939075 -27.076876 L 43.939075 1.268517 L 9.919895 1.268517 Z M 9.919895 -27.076876 " transform="matrix(0.995532,0,0,-0.995532,84.737707,60.657381)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="98.457135" y="75.984594"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="107.824098" y="77.471919"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="112.273131" y="75.984594"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="116.130818" y="75.984594"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="120.779953" y="75.984594"/>
</g>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -18.923818 21.507378 C -18.923818 27.012443 -23.385157 31.473782 -28.886297 31.473782 C -34.387438 31.473782 -38.848777 27.012443 -38.848777 21.507378 C -38.848777 16.006238 -34.387438 11.544899 -28.886297 11.544899 C -23.385157 11.544899 -18.923818 16.006238 -18.923818 21.507378 Z M -18.923818 21.507378 " transform="matrix(0.995532,0,0,-0.995532,84.737707,60.657381)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="49.812447" y="43.392862"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="46.283286" y="56.932099"/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 67.804688 140.664062 L 101.667969 140.664062 L 101.667969 112.445312 L 67.804688 112.445312 Z M 67.804688 140.664062 "/>
<g clip-path="url(#clip1)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -17.009013 -80.365743 L 17.006243 -80.365743 L 17.006243 -52.02035 L -17.009013 -52.02035 Z M -17.009013 -80.365743 " transform="matrix(0.995532,0,0,-0.995532,84.737707,60.657381)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="72.208934" y="129.034512"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="80.453932" y="130.522832"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="84.902965" y="129.034512"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="88.759657" y="129.034512"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="93.408792" y="129.034512"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -84.12136 21.507378 L -43.482762 21.507378 " transform="matrix(0.995532,0,0,-0.995532,84.737707,60.657381)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.051825 -0.0018117 L 1.610105 1.68149 L 3.08937 -0.0018117 L 1.610105 -1.68119 Z M 6.051825 -0.0018117 " transform="matrix(0.995532,0,0,-0.995532,38.623651,39.24429)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="4.795478" y="35.443537"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -17.507333 -66.193047 L -74.198118 -66.193047 L -74.198118 -12.904179 L 4.791513 -12.904179 " transform="matrix(0.995532,0,0,-0.995532,84.737707,60.657381)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.05377 0.000800598 L 1.608126 1.684103 L 3.087392 0.000800598 L 1.608126 -1.682501 Z M 6.05377 0.000800598 " transform="matrix(0.995532,0,0,-0.995532,86.680309,73.504703)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="8.031953" y="69.703781"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -28.886297 -12.904179 L -28.886297 6.910914 " transform="matrix(0.995532,0,0,-0.995532,84.737707,60.657381)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.054074 0.000127209 L 1.60843 1.683429 L 3.087696 0.000127209 L 1.60843 -1.683175 Z M 6.054074 0.000127209 " transform="matrix(0,-0.995532,-0.995532,0,55.980595,56.601244)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 57.964844 73.503906 C 57.964844 72.410156 57.074219 71.519531 55.980469 71.519531 C 54.886719 71.519531 53.996094 72.410156 53.996094 73.503906 C 53.996094 74.601562 54.886719 75.488281 55.980469 75.488281 C 57.074219 75.488281 57.964844 74.601562 57.964844 73.503906 Z M 57.964844 73.503906 "/>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -18.923818 21.507378 L 4.791513 21.507378 " transform="matrix(0.995532,0,0,-0.995532,84.737707,60.657381)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.05377 -0.0018117 L 1.608126 1.68149 L 3.087392 -0.0018117 L 1.608126 -1.68119 Z M 6.05377 -0.0018117 " transform="matrix(0.995532,0,0,-0.995532,86.680309,39.24429)"/>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -55.858366 21.507378 L -55.858366 -34.414346 L 74.199272 -34.414346 L 74.199272 -66.193047 L 22.138548 -66.193047 " transform="matrix(0.995532,0,0,-0.995532,84.737707,60.657381)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 103.578125 126.554688 L 108.003906 128.230469 L 106.53125 126.554688 L 108.003906 124.878906 Z M 103.578125 126.554688 "/>
<g clip-path="url(#clip2)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.053288 -0.000973415 L 1.607644 1.682329 L 3.08691 -0.000973415 L 1.607644 -1.684275 Z M 6.053288 -0.000973415 " transform="matrix(-0.995532,0,0,0.995532,109.604368,126.555657)"/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 31.113281 39.246094 C 31.113281 38.148438 30.226562 37.261719 29.128906 37.261719 C 28.035156 37.261719 27.144531 38.148438 27.144531 39.246094 C 27.144531 40.339844 28.035156 41.226562 29.128906 41.226562 C 30.226562 41.226562 31.113281 40.339844 31.113281 39.246094 Z M 31.113281 39.246094 "/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="156.023783" y="91.116683"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 44.437395 21.507378 L 79.488529 21.507378 " transform="matrix(0.995532,0,0,-0.995532,84.737707,60.657381)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 167.070312 39.246094 L 162.644531 37.570312 L 164.117188 39.246094 L 162.644531 40.917969 Z M 167.070312 39.246094 "/>
<g clip-path="url(#clip3)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.053055 -0.0018117 L 1.607412 1.68149 L 3.086677 -0.0018117 L 1.607412 -1.68119 Z M 6.053055 -0.0018117 " transform="matrix(0.995532,0,0,-0.995532,161.044301,39.24429)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-8" x="155.618601" y="33.956212"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="160.230902" y="35.443537"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 44.437395 -12.904179 L 79.488529 -12.904179 " transform="matrix(0.995532,0,0,-0.995532,84.737707,60.657381)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 167.070312 73.503906 L 162.644531 71.828125 L 164.117188 73.503906 L 162.644531 75.179688 Z M 167.070312 73.503906 "/>
<g clip-path="url(#clip4)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.053055 0.000800598 L 1.607412 1.684103 L 3.086677 0.000800598 L 1.607412 -1.682501 Z M 6.053055 0.000800598 " transform="matrix(0.995532,0,0,-0.995532,161.044301,73.504703)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-8" x="155.618601" y="68.215461"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="160.230902" y="69.703781"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,197 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="170.236pt" height="184.504pt" viewBox="0 0 170.236 184.504" version="1.2">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 7.484375 -5.28125 C 7.484375 -6.046875 6.828125 -6.78125 5.53125 -6.78125 L 2.3125 -6.78125 C 2.125 -6.78125 2.015625 -6.78125 2.015625 -6.59375 C 2.015625 -6.46875 2.109375 -6.46875 2.296875 -6.46875 C 2.4375 -6.46875 2.609375 -6.453125 2.734375 -6.453125 C 2.890625 -6.421875 2.953125 -6.40625 2.953125 -6.296875 C 2.953125 -6.25 2.9375 -6.21875 2.90625 -6.109375 L 1.578125 -0.78125 C 1.484375 -0.390625 1.453125 -0.3125 0.671875 -0.3125 C 0.5 -0.3125 0.390625 -0.3125 0.390625 -0.125 C 0.390625 0 0.515625 0 0.546875 0 L 1.8125 -0.03125 L 2.4375 -0.015625 C 2.65625 -0.015625 2.875 0 3.078125 0 C 3.15625 0 3.28125 0 3.28125 -0.203125 C 3.28125 -0.3125 3.1875 -0.3125 3 -0.3125 C 2.640625 -0.3125 2.359375 -0.3125 2.359375 -0.484375 C 2.359375 -0.546875 2.375 -0.59375 2.390625 -0.65625 L 3 -3.140625 L 4.6875 -3.140625 C 6.109375 -3.140625 7.484375 -4.171875 7.484375 -5.28125 Z M 6.5625 -5.515625 C 6.5625 -5.125 6.359375 -4.28125 5.96875 -3.921875 C 5.484375 -3.46875 4.875 -3.390625 4.4375 -3.390625 L 3.046875 -3.390625 L 3.71875 -6.09375 C 3.8125 -6.4375 3.828125 -6.46875 4.25 -6.46875 L 5.203125 -6.46875 C 6.03125 -6.46875 6.5625 -6.203125 6.5625 -5.515625 Z M 6.5625 -5.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 3.921875 -1.53125 C 3.921875 -1.890625 3.734375 -2.140625 3.625 -2.265625 C 3.359375 -2.546875 3.0625 -2.59375 2.625 -2.671875 C 2.265625 -2.765625 1.875 -2.828125 1.875 -3.28125 C 1.875 -3.5625 2.109375 -4.171875 2.984375 -4.171875 C 3.234375 -4.171875 3.734375 -4.09375 3.875 -3.703125 C 3.609375 -3.703125 3.40625 -3.484375 3.40625 -3.265625 C 3.40625 -3.125 3.5 -2.96875 3.703125 -2.96875 C 3.921875 -2.96875 4.171875 -3.140625 4.171875 -3.53125 C 4.171875 -3.984375 3.734375 -4.390625 2.984375 -4.390625 C 1.671875 -4.390625 1.3125 -3.375 1.3125 -2.9375 C 1.3125 -2.15625 2.046875 -2.015625 2.328125 -1.953125 C 2.84375 -1.859375 3.359375 -1.75 3.359375 -1.203125 C 3.359375 -0.9375 3.140625 -0.109375 1.9375 -0.109375 C 1.8125 -0.109375 1.046875 -0.109375 0.8125 -0.640625 C 1.1875 -0.578125 1.4375 -0.890625 1.4375 -1.15625 C 1.4375 -1.390625 1.28125 -1.515625 1.078125 -1.515625 C 0.8125 -1.515625 0.515625 -1.296875 0.515625 -0.859375 C 0.515625 -0.28125 1.078125 0.109375 1.9375 0.109375 C 3.546875 0.109375 3.921875 -1.09375 3.921875 -1.53125 Z M 3.921875 -1.53125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 10.390625 -6.671875 C 10.390625 -6.703125 10.359375 -6.78125 10.28125 -6.78125 C 10.046875 -6.78125 9.765625 -6.75 9.515625 -6.75 C 9.171875 -6.75 8.8125 -6.78125 8.484375 -6.78125 C 8.421875 -6.78125 8.296875 -6.78125 8.296875 -6.59375 C 8.296875 -6.484375 8.390625 -6.46875 8.4375 -6.46875 C 8.6875 -6.453125 9.03125 -6.375 9.03125 -6.078125 C 9.03125 -5.96875 8.984375 -5.890625 8.90625 -5.75 L 6.21875 -1.078125 L 5.859375 -6 C 5.84375 -6.203125 5.828125 -6.453125 6.546875 -6.46875 C 6.71875 -6.46875 6.8125 -6.46875 6.8125 -6.671875 C 6.8125 -6.765625 6.703125 -6.78125 6.671875 -6.78125 C 6.265625 -6.78125 5.859375 -6.75 5.453125 -6.75 C 5.234375 -6.75 4.640625 -6.78125 4.421875 -6.78125 C 4.359375 -6.78125 4.234375 -6.78125 4.234375 -6.578125 C 4.234375 -6.46875 4.328125 -6.46875 4.46875 -6.46875 C 4.90625 -6.46875 4.96875 -6.40625 4.984375 -6.21875 L 5.046875 -5.453125 L 2.546875 -1.078125 L 2.15625 -6.109375 C 2.15625 -6.234375 2.15625 -6.453125 2.921875 -6.46875 C 3.015625 -6.46875 3.125 -6.46875 3.125 -6.671875 C 3.125 -6.78125 2.984375 -6.78125 2.984375 -6.78125 C 2.59375 -6.78125 2.171875 -6.75 1.765625 -6.75 C 1.421875 -6.75 1.0625 -6.78125 0.71875 -6.78125 C 0.671875 -6.78125 0.546875 -6.78125 0.546875 -6.59375 C 0.546875 -6.46875 0.640625 -6.46875 0.796875 -6.46875 C 1.296875 -6.46875 1.296875 -6.375 1.3125 -6.109375 L 1.765625 -0.046875 C 1.78125 0.140625 1.78125 0.21875 1.921875 0.21875 C 2.046875 0.21875 2.078125 0.15625 2.15625 0.015625 L 5.078125 -5.046875 L 5.453125 -0.046875 C 5.46875 0.171875 5.484375 0.21875 5.609375 0.21875 C 5.734375 0.21875 5.796875 0.125 5.84375 0.03125 L 9.09375 -5.625 C 9.34375 -6.0625 9.578125 -6.421875 10.203125 -6.46875 C 10.296875 -6.484375 10.390625 -6.484375 10.390625 -6.671875 Z M 10.390625 -6.671875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 7.125 -0.203125 C 7.125 -0.3125 7.03125 -0.3125 6.84375 -0.3125 C 6.484375 -0.3125 6.203125 -0.3125 6.203125 -0.484375 C 6.203125 -0.546875 6.21875 -0.59375 6.234375 -0.65625 L 7.578125 -6.015625 C 7.65625 -6.375 7.671875 -6.46875 8.40625 -6.46875 C 8.65625 -6.46875 8.734375 -6.46875 8.734375 -6.671875 C 8.734375 -6.78125 8.625 -6.78125 8.609375 -6.78125 L 7.328125 -6.75 L 6.046875 -6.78125 C 5.96875 -6.78125 5.859375 -6.78125 5.859375 -6.578125 C 5.859375 -6.46875 5.953125 -6.46875 6.140625 -6.46875 C 6.140625 -6.46875 6.34375 -6.46875 6.515625 -6.453125 C 6.703125 -6.421875 6.78125 -6.421875 6.78125 -6.296875 C 6.78125 -6.25 6.78125 -6.234375 6.75 -6.109375 L 6.15625 -3.6875 L 3.125 -3.6875 L 3.703125 -6.015625 C 3.796875 -6.375 3.828125 -6.46875 4.546875 -6.46875 C 4.796875 -6.46875 4.875 -6.46875 4.875 -6.671875 C 4.875 -6.78125 4.765625 -6.78125 4.75 -6.78125 L 3.46875 -6.75 L 2.1875 -6.78125 C 2.109375 -6.78125 2 -6.78125 2 -6.578125 C 2 -6.46875 2.09375 -6.46875 2.28125 -6.46875 C 2.28125 -6.46875 2.484375 -6.46875 2.65625 -6.453125 C 2.84375 -6.421875 2.921875 -6.421875 2.921875 -6.296875 C 2.921875 -6.25 2.921875 -6.21875 2.890625 -6.109375 L 1.5625 -0.78125 C 1.453125 -0.390625 1.4375 -0.3125 0.65625 -0.3125 C 0.46875 -0.3125 0.390625 -0.3125 0.390625 -0.109375 C 0.390625 0 0.53125 0 0.53125 0 L 1.78125 -0.03125 L 2.421875 -0.015625 C 2.640625 -0.015625 2.859375 0 3.0625 0 C 3.140625 0 3.265625 0 3.265625 -0.203125 C 3.265625 -0.3125 3.171875 -0.3125 2.984375 -0.3125 C 2.625 -0.3125 2.34375 -0.3125 2.34375 -0.484375 C 2.34375 -0.546875 2.359375 -0.59375 2.375 -0.65625 L 3.046875 -3.375 L 6.078125 -3.375 L 5.390625 -0.640625 C 5.28125 -0.3125 5.09375 -0.3125 4.484375 -0.3125 C 4.328125 -0.3125 4.25 -0.3125 4.25 -0.109375 C 4.25 0 4.390625 0 4.390625 0 L 5.640625 -0.03125 L 6.28125 -0.015625 C 6.5 -0.015625 6.71875 0 6.921875 0 C 7 0 7.125 0 7.125 -0.203125 Z M 7.125 -0.203125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 6.859375 -3.6875 C 6.859375 -4.234375 6.59375 -4.390625 6.421875 -4.390625 C 6.171875 -4.390625 5.921875 -4.125 5.921875 -3.90625 C 5.921875 -3.78125 5.984375 -3.71875 6.078125 -3.640625 C 6.1875 -3.53125 6.421875 -3.28125 6.421875 -2.796875 C 6.421875 -2.453125 6.140625 -1.484375 5.890625 -0.984375 C 5.625 -0.453125 5.28125 -0.109375 4.796875 -0.109375 C 4.328125 -0.109375 4.0625 -0.40625 4.0625 -0.96875 C 4.0625 -1.25 4.125 -1.5625 4.171875 -1.703125 L 4.578125 -3.359375 C 4.640625 -3.578125 4.734375 -3.953125 4.734375 -4.015625 C 4.734375 -4.1875 4.59375 -4.28125 4.4375 -4.28125 C 4.328125 -4.28125 4.140625 -4.203125 4.078125 -4 C 4.046875 -3.921875 3.578125 -2.03125 3.515625 -1.78125 C 3.4375 -1.484375 3.421875 -1.296875 3.421875 -1.125 C 3.421875 -1.015625 3.421875 -0.984375 3.4375 -0.9375 C 3.203125 -0.421875 2.90625 -0.109375 2.515625 -0.109375 C 1.71875 -0.109375 1.71875 -0.84375 1.71875 -1.015625 C 1.71875 -1.328125 1.78125 -1.71875 2.25 -2.9375 C 2.34375 -3.234375 2.40625 -3.375 2.40625 -3.578125 C 2.40625 -4.015625 2.078125 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.859375 1.21875 -4.171875 1.5625 -4.171875 C 1.65625 -4.171875 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.59375 1.703125 -3.3125 1.640625 -3.140625 C 1.203125 -1.96875 1.078125 -1.515625 1.078125 -1.140625 C 1.078125 -0.234375 1.75 0.109375 2.484375 0.109375 C 2.65625 0.109375 3.125 0.109375 3.515625 -0.578125 C 3.78125 0.046875 4.46875 0.109375 4.765625 0.109375 C 5.5 0.109375 5.9375 -0.515625 6.203125 -1.109375 C 6.53125 -1.890625 6.859375 -3.21875 6.859375 -3.6875 Z M 6.859375 -3.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-6">
<path style="stroke:none;" d="M 4.640625 -3.6875 C 4.640625 -4.234375 4.390625 -4.390625 4.203125 -4.390625 C 3.953125 -4.390625 3.71875 -4.125 3.71875 -3.90625 C 3.71875 -3.78125 3.765625 -3.71875 3.875 -3.609375 C 4.09375 -3.40625 4.21875 -3.15625 4.21875 -2.796875 C 4.21875 -2.375 3.609375 -0.109375 2.453125 -0.109375 C 1.9375 -0.109375 1.71875 -0.453125 1.71875 -0.96875 C 1.71875 -1.53125 1.984375 -2.25 2.296875 -3.078125 C 2.359375 -3.25 2.40625 -3.390625 2.40625 -3.578125 C 2.40625 -4.015625 2.09375 -4.390625 1.59375 -4.390625 C 0.671875 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.859375 -3.9375 1.28125 -4.171875 1.5625 -4.171875 C 1.640625 -4.171875 1.8125 -4.171875 1.8125 -3.84375 C 1.8125 -3.609375 1.71875 -3.328125 1.640625 -3.15625 C 1.203125 -2 1.078125 -1.546875 1.078125 -1.125 C 1.078125 -0.046875 1.953125 0.109375 2.40625 0.109375 C 4.078125 0.109375 4.640625 -3.171875 4.640625 -3.6875 Z M 4.640625 -3.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-7">
<path style="stroke:none;" d="M 5.390625 -1.421875 C 5.390625 -1.515625 5.296875 -1.515625 5.265625 -1.515625 C 5.171875 -1.515625 5.15625 -1.484375 5.125 -1.34375 C 4.984375 -0.78125 4.796875 -0.109375 4.390625 -0.109375 C 4.171875 -0.109375 4.078125 -0.234375 4.078125 -0.5625 C 4.078125 -0.78125 4.203125 -1.25 4.28125 -1.59375 L 4.546875 -2.671875 C 4.578125 -2.8125 4.6875 -3.1875 4.71875 -3.34375 C 4.765625 -3.578125 4.875 -3.953125 4.875 -4.015625 C 4.875 -4.1875 4.734375 -4.28125 4.578125 -4.28125 C 4.53125 -4.28125 4.28125 -4.265625 4.203125 -3.921875 L 3.453125 -0.9375 C 3.4375 -0.90625 3.046875 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.5625 1.703125 -0.921875 C 1.703125 -1.484375 1.984375 -2.265625 2.25 -2.953125 C 2.359375 -3.25 2.40625 -3.390625 2.40625 -3.578125 C 2.40625 -4.015625 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.8125 -3.796875 1.1875 -4.171875 1.5625 -4.171875 C 1.65625 -4.171875 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.609375 1.703125 -3.3125 1.640625 -3.171875 C 1.28125 -2.1875 1.078125 -1.5625 1.078125 -1.078125 C 1.078125 -0.140625 1.75 0.109375 2.296875 0.109375 C 2.953125 0.109375 3.296875 -0.34375 3.46875 -0.5625 C 3.578125 -0.15625 3.921875 0.109375 4.359375 0.109375 C 4.703125 0.109375 4.9375 -0.125 5.09375 -0.4375 C 5.265625 -0.796875 5.390625 -1.421875 5.390625 -1.421875 Z M 5.390625 -1.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-8">
<path style="stroke:none;" d="M 4.3125 -1.421875 C 4.3125 -1.46875 4.28125 -1.515625 4.203125 -1.515625 C 4.109375 -1.515625 4.09375 -1.453125 4.0625 -1.390625 C 3.828125 -0.75 3.1875 -0.5625 2.875 -0.5625 C 2.671875 -0.5625 2.484375 -0.609375 2.28125 -0.6875 C 1.9375 -0.8125 1.796875 -0.859375 1.59375 -0.859375 C 1.59375 -0.859375 1.40625 -0.859375 1.3125 -0.828125 C 1.859375 -1.40625 2.140625 -1.640625 2.5 -1.953125 C 2.5 -1.953125 3.109375 -2.484375 3.46875 -2.84375 C 4.421875 -3.765625 4.640625 -4.25 4.640625 -4.28125 C 4.640625 -4.390625 4.53125 -4.390625 4.53125 -4.390625 C 4.453125 -4.390625 4.421875 -4.359375 4.375 -4.28125 C 4.078125 -3.796875 3.875 -3.640625 3.625 -3.640625 C 3.390625 -3.640625 3.28125 -3.796875 3.125 -3.953125 C 2.9375 -4.1875 2.765625 -4.390625 2.4375 -4.390625 C 1.703125 -4.390625 1.234375 -3.46875 1.234375 -3.25 C 1.234375 -3.203125 1.265625 -3.140625 1.359375 -3.140625 C 1.453125 -3.140625 1.46875 -3.1875 1.484375 -3.25 C 1.671875 -3.703125 2.25 -3.71875 2.328125 -3.71875 C 2.546875 -3.71875 2.734375 -3.65625 2.953125 -3.578125 C 3.359375 -3.421875 3.46875 -3.421875 3.71875 -3.421875 C 3.359375 -3 2.53125 -2.28125 2.34375 -2.125 L 1.453125 -1.296875 C 0.78125 -0.625 0.421875 -0.0625 0.421875 0.015625 C 0.421875 0.109375 0.546875 0.109375 0.546875 0.109375 C 0.625 0.109375 0.640625 0.09375 0.703125 -0.015625 C 0.9375 -0.359375 1.234375 -0.640625 1.546875 -0.640625 C 1.78125 -0.640625 1.875 -0.546875 2.125 -0.265625 C 2.296875 -0.046875 2.46875 0.109375 2.765625 0.109375 C 3.734375 0.109375 4.3125 -1.15625 4.3125 -1.421875 Z M 4.3125 -1.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 3.5 -1.265625 L 3.265625 -1.265625 C 3.25 -1.109375 3.171875 -0.703125 3.09375 -0.625 C 3.03125 -0.59375 2.5 -0.59375 2.40625 -0.59375 L 1.125 -0.59375 C 1.859375 -1.234375 2.09375 -1.421875 2.515625 -1.75 C 3.03125 -2.171875 3.5 -2.59375 3.5 -3.25 C 3.5 -4.09375 2.765625 -4.609375 1.875 -4.609375 C 1.015625 -4.609375 0.4375 -4 0.4375 -3.359375 C 0.4375 -3.015625 0.734375 -2.96875 0.8125 -2.96875 C 0.96875 -2.96875 1.171875 -3.09375 1.171875 -3.34375 C 1.171875 -3.46875 1.125 -3.71875 0.765625 -3.71875 C 0.984375 -4.203125 1.453125 -4.359375 1.78125 -4.359375 C 2.46875 -4.359375 2.828125 -3.8125 2.828125 -3.25 C 2.828125 -2.65625 2.40625 -2.171875 2.171875 -1.921875 L 0.5 -0.265625 C 0.4375 -0.203125 0.4375 -0.1875 0.4375 0 L 3.296875 0 Z M 3.5 -1.265625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-2">
<path style="stroke:none;" d="M 3.28125 0 L 3.28125 -0.25 L 3.015625 -0.25 C 2.328125 -0.25 2.328125 -0.34375 2.328125 -0.5625 L 2.328125 -4.40625 C 2.328125 -4.59375 2.3125 -4.609375 2.109375 -4.609375 C 1.671875 -4.171875 1.046875 -4.15625 0.75 -4.15625 L 0.75 -3.90625 C 0.921875 -3.90625 1.375 -3.90625 1.765625 -4.109375 L 1.765625 -0.5625 C 1.765625 -0.34375 1.765625 -0.25 1.0625 -0.25 L 0.8125 -0.25 L 0.8125 0 L 2.046875 -0.03125 Z M 3.28125 0 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph2-1">
<path style="stroke:none;" d="M 3.28125 2.375 C 3.28125 2.34375 3.28125 2.328125 3.109375 2.15625 C 1.875 0.90625 1.5625 -0.96875 1.5625 -2.484375 C 1.5625 -4.203125 1.9375 -5.9375 3.15625 -7.171875 C 3.28125 -7.296875 3.28125 -7.3125 3.28125 -7.34375 C 3.28125 -7.40625 3.25 -7.4375 3.1875 -7.4375 C 3.078125 -7.4375 2.1875 -6.765625 1.609375 -5.5 C 1.09375 -4.421875 0.984375 -3.3125 0.984375 -2.484375 C 0.984375 -1.703125 1.09375 -0.5 1.640625 0.609375 C 2.234375 1.828125 3.078125 2.484375 3.1875 2.484375 C 3.25 2.484375 3.28125 2.453125 3.28125 2.375 Z M 3.28125 2.375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-2">
<path style="stroke:none;" d="M 2.875 -2.484375 C 2.875 -3.25 2.765625 -4.453125 2.21875 -5.578125 C 1.625 -6.796875 0.765625 -7.4375 0.671875 -7.4375 C 0.609375 -7.4375 0.5625 -7.40625 0.5625 -7.34375 C 0.5625 -7.3125 0.5625 -7.296875 0.75 -7.109375 C 1.71875 -6.125 2.296875 -4.546875 2.296875 -2.484375 C 2.296875 -0.78125 1.921875 0.96875 0.6875 2.21875 C 0.5625 2.328125 0.5625 2.34375 0.5625 2.375 C 0.5625 2.4375 0.609375 2.484375 0.671875 2.484375 C 0.765625 2.484375 1.65625 1.8125 2.25 0.546875 C 2.75 -0.546875 2.875 -1.640625 2.875 -2.484375 Z M 2.875 -2.484375 "/>
</symbol>
<symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph3-1">
<path style="stroke:none;" d="M 11.53125 -4.265625 C 11.53125 -4.578125 11.265625 -4.578125 11 -4.578125 L 6.46875 -4.578125 L 6.46875 -9.125 C 6.46875 -9.359375 6.46875 -9.65625 6.171875 -9.65625 C 5.859375 -9.65625 5.859375 -9.375 5.859375 -9.125 L 5.859375 -4.578125 L 1.3125 -4.578125 C 1.078125 -4.578125 0.78125 -4.578125 0.78125 -4.28125 C 0.78125 -3.984375 1.0625 -3.984375 1.3125 -3.984375 L 5.859375 -3.984375 L 5.859375 0.5625 C 5.859375 0.8125 5.859375 1.09375 6.15625 1.09375 C 6.46875 1.09375 6.46875 0.828125 6.46875 0.5625 L 6.46875 -3.984375 L 11 -3.984375 C 11.25 -3.984375 11.53125 -3.984375 11.53125 -4.265625 Z M 11.53125 -4.265625 "/>
</symbol>
<symbol overflow="visible" id="glyph4-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph4-1">
<path style="stroke:none;" d="M 6.890625 -2.484375 C 6.890625 -2.671875 6.703125 -2.671875 6.5625 -2.671875 L 1.15625 -2.671875 C 1.015625 -2.671875 0.828125 -2.671875 0.828125 -2.484375 C 0.828125 -2.28125 1.015625 -2.28125 1.15625 -2.28125 L 6.5625 -2.28125 C 6.703125 -2.28125 6.890625 -2.28125 6.890625 -2.484375 Z M 6.890625 -2.484375 "/>
</symbol>
</g>
<clipPath id="clip1">
<path d="M 67 154 L 103 154 L 103 183.84375 L 67 183.84375 Z M 67 154 "/>
</clipPath>
<clipPath id="clip2">
<path d="M 89 153 L 123 153 L 123 183.84375 L 89 183.84375 Z M 89 153 "/>
</clipPath>
<clipPath id="clip3">
<path d="M 148 91 L 169.476562 91 L 169.476562 123 L 148 123 Z M 148 91 "/>
</clipPath>
</defs>
<g id="surface1">
<path style="fill-rule:nonzero;fill:rgb(79.998779%,79.998779%,79.998779%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,2.98883;stroke-miterlimit:10;" d="M -63.78048 -63.781297 L 63.781634 -63.781297 L 63.781634 63.780817 L -63.78048 63.780817 Z M -63.78048 -63.781297 " transform="matrix(0.995532,0,0,-0.995532,84.737707,81.679448)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="73.147721" y="11.40782"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="79.515145" y="12.895145"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="83.964178" y="11.40782"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="87.821865" y="11.40782"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="92.471001" y="11.40782"/>
</g>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -43.93792 30.821058 L -9.922665 30.821058 L -9.922665 59.170374 L -43.93792 59.170374 Z M -43.93792 30.821058 " transform="matrix(0.995532,0,0,-0.995532,84.737707,81.679448)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="44.838769" y="39.364354"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="54.205731" y="40.852674"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="58.65576" y="39.364354"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="62.512451" y="39.364354"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="67.161586" y="39.364354"/>
</g>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -43.93792 -7.745783 L -9.922665 -7.745783 L -9.922665 20.603533 L -43.93792 20.603533 Z M -43.93792 -7.745783 " transform="matrix(0.995532,0,0,-0.995532,84.737707,81.679448)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="44.838769" y="77.759043"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="54.205731" y="79.247363"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="58.65576" y="77.759043"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="62.512451" y="77.759043"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="67.161586" y="77.759043"/>
</g>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 38.849931 6.426913 C 38.849931 11.931977 34.388592 16.389392 28.887451 16.389392 C 23.382387 16.389392 18.924972 11.931977 18.924972 6.426913 C 18.924972 0.925772 23.382387 -3.535567 28.887451 -3.535567 C 34.388592 -3.535567 38.849931 0.925772 38.849931 6.426913 Z M 38.849931 6.426913 " transform="matrix(0.995532,0,0,-0.995532,84.737707,81.679448)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="107.326332" y="79.427555"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="93.878683" y="72.46978"/>
</g>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 13.255109 -25.712776 C 13.255109 -20.207711 8.79377 -15.746373 3.292629 -15.746373 C -2.212435 -15.746373 -6.66985 -20.207711 -6.66985 -25.712776 C -6.66985 -31.213916 -2.212435 -35.675255 3.292629 -35.675255 C 8.79377 -35.675255 13.255109 -31.213916 13.255109 -25.712776 Z M 13.255109 -25.712776 " transform="matrix(0.995532,0,0,-0.995532,84.737707,81.679448)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="81.845686" y="111.421967"/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 67.804688 182.851562 L 101.667969 182.851562 L 101.667969 154.632812 L 67.804688 154.632812 Z M 67.804688 182.851562 "/>
<g clip-path="url(#clip1)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -17.009013 -101.626163 L 17.006243 -101.626163 L 17.006243 -73.280771 L -17.009013 -73.280771 Z M -17.009013 -101.626163 " transform="matrix(0.995532,0,0,-0.995532,84.737707,81.679448)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="72.208934" y="171.220598"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="80.453932" y="172.708918"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="84.902965" y="171.220598"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="88.759657" y="171.220598"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="93.408792" y="171.220598"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -84.12136 44.997678 L -49.070226 44.997678 " transform="matrix(0.995532,0,0,-0.995532,84.737707,81.679448)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.055125 0.00194818 L 1.609481 1.681326 L 3.088746 0.00194818 L 1.609481 -1.681354 Z M 6.055125 0.00194818 " transform="matrix(0.995532,0,0,-0.995532,33.061772,36.884752)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="4.795478" y="31.595221"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="11.895614" y="33.083541"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -84.12136 6.426913 L -49.070226 6.426913 " transform="matrix(0.995532,0,0,-0.995532,84.737707,81.679448)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.055125 -0.00132718 L 1.609481 1.681975 L 3.088746 -0.00132718 L 1.609481 -1.684629 Z M 6.055125 -0.00132718 " transform="matrix(0.995532,0,0,-0.995532,33.061772,75.279929)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="4.795478" y="69.98991"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="11.895614" y="71.47823"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -9.424344 44.997678 L 28.887451 44.997678 L 28.887451 21.023377 " transform="matrix(0.995532,0,0,-0.995532,84.737707,81.679448)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.053279 0.00128144 L 1.607635 1.684583 L 3.086901 0.00128144 L 1.607635 -1.682021 Z M 6.053279 0.00128144 " transform="matrix(0,0.995532,0.995532,0,113.494818,57.922985)"/>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -9.424344 6.426913 L 14.290987 6.426913 " transform="matrix(0.995532,0,0,-0.995532,84.737707,81.679448)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.053243 -0.00132718 L 1.6076 1.681975 L 3.086865 -0.00132718 L 1.6076 -1.684629 Z M 6.053243 -0.00132718 " transform="matrix(0.995532,0,0,-0.995532,96.137864,75.279929)"/>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3.292629 6.426913 L 3.292629 -11.116311 " transform="matrix(0.995532,0,0,-0.995532,84.737707,81.679448)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.053748 0.00128921 L 1.608104 1.684591 L 3.087369 0.00128921 L 1.608104 -1.682013 Z M 6.053748 0.00128921 " transform="matrix(0,0.995532,0.995532,0,88.014342,89.918612)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 89.996094 75.28125 C 89.996094 74.183594 89.109375 73.296875 88.015625 73.296875 C 86.917969 73.296875 86.03125 74.183594 86.03125 75.28125 C 86.03125 76.375 86.917969 77.261719 88.015625 77.261719 C 89.109375 77.261719 89.996094 76.375 89.996094 75.28125 Z M 89.996094 75.28125 "/>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 28.887451 -3.535567 L 28.887451 -51.421388 L 84.122514 -51.421388 L 84.122514 -87.453467 L 22.138548 -87.453467 " transform="matrix(0.995532,0,0,-0.995532,84.737707,81.679448)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 103.578125 168.742188 L 108.003906 170.417969 L 106.53125 168.742188 L 108.003906 167.066406 Z M 103.578125 168.742188 "/>
<g clip-path="url(#clip2)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.053288 -0.000663151 L 1.607644 1.682639 L 3.08691 -0.000663151 L 1.607644 -1.683965 Z M 6.053288 -0.000663151 " transform="matrix(-0.995532,0,0,0.995532,109.604368,168.742848)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="159.517105" y="129.06877"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -17.507333 -87.453467 L -84.12136 -87.453467 L -84.12136 -25.712776 L -11.303835 -25.712776 " transform="matrix(0.995532,0,0,-0.995532,84.737707,81.679448)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.053241 -0.0017958 L 1.607597 1.681506 L 3.086863 -0.0017958 L 1.607597 -1.681174 Z M 6.053241 -0.0017958 " transform="matrix(0.995532,0,0,-0.995532,70.657398,107.275556)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="4.795478" y="103.473639"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 13.255109 -25.712776 L 79.488529 -25.712776 " transform="matrix(0.995532,0,0,-0.995532,84.737707,81.679448)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 167.070312 107.277344 L 162.644531 105.601562 L 164.117188 107.277344 L 162.644531 108.949219 Z M 167.070312 107.277344 "/>
<g clip-path="url(#clip3)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.053055 -0.0017958 L 1.607412 1.681506 L 3.086677 -0.0017958 L 1.607412 -1.681174 Z M 6.053055 -0.0017958 " transform="matrix(0.995532,0,0,-0.995532,161.044301,107.275556)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-8" x="159.631591" y="103.473639"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,231 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="170.236pt" height="170.331pt" viewBox="0 0 170.236 170.331" version="1.2">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 7.484375 -5.28125 C 7.484375 -6.046875 6.828125 -6.78125 5.53125 -6.78125 L 2.3125 -6.78125 C 2.125 -6.78125 2.015625 -6.78125 2.015625 -6.59375 C 2.015625 -6.46875 2.109375 -6.46875 2.296875 -6.46875 C 2.4375 -6.46875 2.609375 -6.453125 2.734375 -6.453125 C 2.890625 -6.421875 2.953125 -6.40625 2.953125 -6.296875 C 2.953125 -6.25 2.9375 -6.21875 2.90625 -6.109375 L 1.578125 -0.78125 C 1.484375 -0.390625 1.453125 -0.3125 0.671875 -0.3125 C 0.5 -0.3125 0.390625 -0.3125 0.390625 -0.125 C 0.390625 0 0.515625 0 0.546875 0 L 1.8125 -0.03125 L 2.4375 -0.015625 C 2.65625 -0.015625 2.875 0 3.078125 0 C 3.15625 0 3.28125 0 3.28125 -0.203125 C 3.28125 -0.3125 3.1875 -0.3125 3 -0.3125 C 2.640625 -0.3125 2.359375 -0.3125 2.359375 -0.484375 C 2.359375 -0.546875 2.375 -0.59375 2.390625 -0.65625 L 3 -3.140625 L 4.6875 -3.140625 C 6.109375 -3.140625 7.484375 -4.171875 7.484375 -5.28125 Z M 6.5625 -5.515625 C 6.5625 -5.125 6.359375 -4.28125 5.96875 -3.921875 C 5.484375 -3.46875 4.875 -3.390625 4.4375 -3.390625 L 3.046875 -3.390625 L 3.71875 -6.09375 C 3.8125 -6.4375 3.828125 -6.46875 4.25 -6.46875 L 5.203125 -6.46875 C 6.03125 -6.46875 6.5625 -6.203125 6.5625 -5.515625 Z M 6.5625 -5.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 3.921875 -1.53125 C 3.921875 -1.890625 3.734375 -2.140625 3.625 -2.265625 C 3.359375 -2.546875 3.0625 -2.59375 2.625 -2.671875 C 2.265625 -2.765625 1.875 -2.828125 1.875 -3.28125 C 1.875 -3.5625 2.109375 -4.171875 2.984375 -4.171875 C 3.234375 -4.171875 3.734375 -4.09375 3.875 -3.703125 C 3.609375 -3.703125 3.40625 -3.484375 3.40625 -3.265625 C 3.40625 -3.125 3.5 -2.96875 3.703125 -2.96875 C 3.921875 -2.96875 4.171875 -3.140625 4.171875 -3.53125 C 4.171875 -3.984375 3.734375 -4.390625 2.984375 -4.390625 C 1.671875 -4.390625 1.3125 -3.375 1.3125 -2.9375 C 1.3125 -2.15625 2.046875 -2.015625 2.328125 -1.953125 C 2.84375 -1.859375 3.359375 -1.75 3.359375 -1.203125 C 3.359375 -0.9375 3.140625 -0.109375 1.9375 -0.109375 C 1.8125 -0.109375 1.046875 -0.109375 0.8125 -0.640625 C 1.1875 -0.578125 1.4375 -0.890625 1.4375 -1.15625 C 1.4375 -1.390625 1.28125 -1.515625 1.078125 -1.515625 C 0.8125 -1.515625 0.515625 -1.296875 0.515625 -0.859375 C 0.515625 -0.28125 1.078125 0.109375 1.9375 0.109375 C 3.546875 0.109375 3.921875 -1.09375 3.921875 -1.53125 Z M 3.921875 -1.53125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 10.390625 -6.671875 C 10.390625 -6.703125 10.359375 -6.78125 10.28125 -6.78125 C 10.046875 -6.78125 9.765625 -6.75 9.515625 -6.75 C 9.171875 -6.75 8.8125 -6.78125 8.484375 -6.78125 C 8.421875 -6.78125 8.296875 -6.78125 8.296875 -6.59375 C 8.296875 -6.484375 8.390625 -6.46875 8.4375 -6.46875 C 8.6875 -6.453125 9.03125 -6.375 9.03125 -6.078125 C 9.03125 -5.96875 8.984375 -5.890625 8.90625 -5.75 L 6.21875 -1.078125 L 5.859375 -6 C 5.84375 -6.203125 5.828125 -6.453125 6.546875 -6.46875 C 6.71875 -6.46875 6.8125 -6.46875 6.8125 -6.671875 C 6.8125 -6.765625 6.703125 -6.78125 6.671875 -6.78125 C 6.265625 -6.78125 5.859375 -6.75 5.453125 -6.75 C 5.234375 -6.75 4.640625 -6.78125 4.421875 -6.78125 C 4.359375 -6.78125 4.234375 -6.78125 4.234375 -6.578125 C 4.234375 -6.46875 4.328125 -6.46875 4.46875 -6.46875 C 4.90625 -6.46875 4.96875 -6.40625 4.984375 -6.21875 L 5.046875 -5.453125 L 2.546875 -1.078125 L 2.15625 -6.109375 C 2.15625 -6.234375 2.15625 -6.453125 2.921875 -6.46875 C 3.015625 -6.46875 3.125 -6.46875 3.125 -6.671875 C 3.125 -6.78125 2.984375 -6.78125 2.984375 -6.78125 C 2.59375 -6.78125 2.171875 -6.75 1.765625 -6.75 C 1.421875 -6.75 1.0625 -6.78125 0.71875 -6.78125 C 0.671875 -6.78125 0.546875 -6.78125 0.546875 -6.59375 C 0.546875 -6.46875 0.640625 -6.46875 0.796875 -6.46875 C 1.296875 -6.46875 1.296875 -6.375 1.3125 -6.109375 L 1.765625 -0.046875 C 1.78125 0.140625 1.78125 0.21875 1.921875 0.21875 C 2.046875 0.21875 2.078125 0.15625 2.15625 0.015625 L 5.078125 -5.046875 L 5.453125 -0.046875 C 5.46875 0.171875 5.484375 0.21875 5.609375 0.21875 C 5.734375 0.21875 5.796875 0.125 5.84375 0.03125 L 9.09375 -5.625 C 9.34375 -6.0625 9.578125 -6.421875 10.203125 -6.46875 C 10.296875 -6.484375 10.390625 -6.484375 10.390625 -6.671875 Z M 10.390625 -6.671875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 7.125 -0.203125 C 7.125 -0.3125 7.03125 -0.3125 6.84375 -0.3125 C 6.484375 -0.3125 6.203125 -0.3125 6.203125 -0.484375 C 6.203125 -0.546875 6.21875 -0.59375 6.234375 -0.65625 L 7.578125 -6.015625 C 7.65625 -6.375 7.671875 -6.46875 8.40625 -6.46875 C 8.65625 -6.46875 8.734375 -6.46875 8.734375 -6.671875 C 8.734375 -6.78125 8.625 -6.78125 8.609375 -6.78125 L 7.328125 -6.75 L 6.046875 -6.78125 C 5.96875 -6.78125 5.859375 -6.78125 5.859375 -6.578125 C 5.859375 -6.46875 5.953125 -6.46875 6.140625 -6.46875 C 6.140625 -6.46875 6.34375 -6.46875 6.515625 -6.453125 C 6.703125 -6.421875 6.78125 -6.421875 6.78125 -6.296875 C 6.78125 -6.25 6.78125 -6.234375 6.75 -6.109375 L 6.15625 -3.6875 L 3.125 -3.6875 L 3.703125 -6.015625 C 3.796875 -6.375 3.828125 -6.46875 4.546875 -6.46875 C 4.796875 -6.46875 4.875 -6.46875 4.875 -6.671875 C 4.875 -6.78125 4.765625 -6.78125 4.75 -6.78125 L 3.46875 -6.75 L 2.1875 -6.78125 C 2.109375 -6.78125 2 -6.78125 2 -6.578125 C 2 -6.46875 2.09375 -6.46875 2.28125 -6.46875 C 2.28125 -6.46875 2.484375 -6.46875 2.65625 -6.453125 C 2.84375 -6.421875 2.921875 -6.421875 2.921875 -6.296875 C 2.921875 -6.25 2.921875 -6.21875 2.890625 -6.109375 L 1.5625 -0.78125 C 1.453125 -0.390625 1.4375 -0.3125 0.65625 -0.3125 C 0.46875 -0.3125 0.390625 -0.3125 0.390625 -0.109375 C 0.390625 0 0.53125 0 0.53125 0 L 1.78125 -0.03125 L 2.421875 -0.015625 C 2.640625 -0.015625 2.859375 0 3.0625 0 C 3.140625 0 3.265625 0 3.265625 -0.203125 C 3.265625 -0.3125 3.171875 -0.3125 2.984375 -0.3125 C 2.625 -0.3125 2.34375 -0.3125 2.34375 -0.484375 C 2.34375 -0.546875 2.359375 -0.59375 2.375 -0.65625 L 3.046875 -3.375 L 6.078125 -3.375 L 5.390625 -0.640625 C 5.28125 -0.3125 5.09375 -0.3125 4.484375 -0.3125 C 4.328125 -0.3125 4.25 -0.3125 4.25 -0.109375 C 4.25 0 4.390625 0 4.390625 0 L 5.640625 -0.03125 L 6.28125 -0.015625 C 6.5 -0.015625 6.71875 0 6.921875 0 C 7 0 7.125 0 7.125 -0.203125 Z M 7.125 -0.203125 "/>
</symbol>
<symbol overflow="visible" id="glyph0-5">
<path style="stroke:none;" d="M 6.859375 -3.6875 C 6.859375 -4.234375 6.59375 -4.390625 6.421875 -4.390625 C 6.171875 -4.390625 5.921875 -4.125 5.921875 -3.90625 C 5.921875 -3.78125 5.984375 -3.71875 6.078125 -3.640625 C 6.1875 -3.53125 6.421875 -3.28125 6.421875 -2.796875 C 6.421875 -2.453125 6.140625 -1.484375 5.890625 -0.984375 C 5.625 -0.453125 5.28125 -0.109375 4.796875 -0.109375 C 4.328125 -0.109375 4.0625 -0.40625 4.0625 -0.96875 C 4.0625 -1.25 4.125 -1.5625 4.171875 -1.703125 L 4.578125 -3.359375 C 4.640625 -3.578125 4.734375 -3.953125 4.734375 -4.015625 C 4.734375 -4.1875 4.59375 -4.28125 4.4375 -4.28125 C 4.328125 -4.28125 4.140625 -4.203125 4.078125 -4 C 4.046875 -3.921875 3.578125 -2.03125 3.515625 -1.78125 C 3.4375 -1.484375 3.421875 -1.296875 3.421875 -1.125 C 3.421875 -1.015625 3.421875 -0.984375 3.4375 -0.9375 C 3.203125 -0.421875 2.90625 -0.109375 2.515625 -0.109375 C 1.71875 -0.109375 1.71875 -0.84375 1.71875 -1.015625 C 1.71875 -1.328125 1.78125 -1.71875 2.25 -2.9375 C 2.34375 -3.234375 2.40625 -3.375 2.40625 -3.578125 C 2.40625 -4.015625 2.078125 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.828125 -3.859375 1.21875 -4.171875 1.5625 -4.171875 C 1.65625 -4.171875 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.59375 1.703125 -3.3125 1.640625 -3.140625 C 1.203125 -1.96875 1.078125 -1.515625 1.078125 -1.140625 C 1.078125 -0.234375 1.75 0.109375 2.484375 0.109375 C 2.65625 0.109375 3.125 0.109375 3.515625 -0.578125 C 3.78125 0.046875 4.46875 0.109375 4.765625 0.109375 C 5.5 0.109375 5.9375 -0.515625 6.203125 -1.109375 C 6.53125 -1.890625 6.859375 -3.21875 6.859375 -3.6875 Z M 6.859375 -3.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-6">
<path style="stroke:none;" d="M 5.390625 -1.421875 C 5.390625 -1.515625 5.296875 -1.515625 5.265625 -1.515625 C 5.171875 -1.515625 5.15625 -1.484375 5.125 -1.34375 C 4.984375 -0.78125 4.796875 -0.109375 4.390625 -0.109375 C 4.171875 -0.109375 4.078125 -0.234375 4.078125 -0.5625 C 4.078125 -0.78125 4.203125 -1.25 4.28125 -1.59375 L 4.546875 -2.671875 C 4.578125 -2.8125 4.6875 -3.1875 4.71875 -3.34375 C 4.765625 -3.578125 4.875 -3.953125 4.875 -4.015625 C 4.875 -4.1875 4.734375 -4.28125 4.578125 -4.28125 C 4.53125 -4.28125 4.28125 -4.265625 4.203125 -3.921875 L 3.453125 -0.9375 C 3.4375 -0.90625 3.046875 -0.109375 2.328125 -0.109375 C 1.8125 -0.109375 1.703125 -0.5625 1.703125 -0.921875 C 1.703125 -1.484375 1.984375 -2.265625 2.25 -2.953125 C 2.359375 -3.25 2.40625 -3.390625 2.40625 -3.578125 C 2.40625 -4.015625 2.09375 -4.390625 1.59375 -4.390625 C 0.65625 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.8125 -3.796875 1.1875 -4.171875 1.5625 -4.171875 C 1.65625 -4.171875 1.8125 -4.15625 1.8125 -3.84375 C 1.8125 -3.609375 1.703125 -3.3125 1.640625 -3.171875 C 1.28125 -2.1875 1.078125 -1.5625 1.078125 -1.078125 C 1.078125 -0.140625 1.75 0.109375 2.296875 0.109375 C 2.953125 0.109375 3.296875 -0.34375 3.46875 -0.5625 C 3.578125 -0.15625 3.921875 0.109375 4.359375 0.109375 C 4.703125 0.109375 4.9375 -0.125 5.09375 -0.4375 C 5.265625 -0.796875 5.390625 -1.421875 5.390625 -1.421875 Z M 5.390625 -1.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-7">
<path style="stroke:none;" d="M 4.640625 -3.6875 C 4.640625 -4.234375 4.390625 -4.390625 4.203125 -4.390625 C 3.953125 -4.390625 3.71875 -4.125 3.71875 -3.90625 C 3.71875 -3.78125 3.765625 -3.71875 3.875 -3.609375 C 4.09375 -3.40625 4.21875 -3.15625 4.21875 -2.796875 C 4.21875 -2.375 3.609375 -0.109375 2.453125 -0.109375 C 1.9375 -0.109375 1.71875 -0.453125 1.71875 -0.96875 C 1.71875 -1.53125 1.984375 -2.25 2.296875 -3.078125 C 2.359375 -3.25 2.40625 -3.390625 2.40625 -3.578125 C 2.40625 -4.015625 2.09375 -4.390625 1.59375 -4.390625 C 0.671875 -4.390625 0.28125 -2.953125 0.28125 -2.859375 C 0.28125 -2.765625 0.40625 -2.765625 0.40625 -2.765625 C 0.5 -2.765625 0.515625 -2.78125 0.5625 -2.9375 C 0.859375 -3.9375 1.28125 -4.171875 1.5625 -4.171875 C 1.640625 -4.171875 1.8125 -4.171875 1.8125 -3.84375 C 1.8125 -3.609375 1.71875 -3.328125 1.640625 -3.15625 C 1.203125 -2 1.078125 -1.546875 1.078125 -1.125 C 1.078125 -0.046875 1.953125 0.109375 2.40625 0.109375 C 4.078125 0.109375 4.640625 -3.171875 4.640625 -3.6875 Z M 4.640625 -3.6875 "/>
</symbol>
<symbol overflow="visible" id="glyph0-8">
<path style="stroke:none;" d="M 4.3125 -1.421875 C 4.3125 -1.46875 4.28125 -1.515625 4.203125 -1.515625 C 4.109375 -1.515625 4.09375 -1.453125 4.0625 -1.390625 C 3.828125 -0.75 3.1875 -0.5625 2.875 -0.5625 C 2.671875 -0.5625 2.484375 -0.609375 2.28125 -0.6875 C 1.9375 -0.8125 1.796875 -0.859375 1.59375 -0.859375 C 1.59375 -0.859375 1.40625 -0.859375 1.3125 -0.828125 C 1.859375 -1.40625 2.140625 -1.640625 2.5 -1.953125 C 2.5 -1.953125 3.109375 -2.484375 3.46875 -2.84375 C 4.421875 -3.765625 4.640625 -4.25 4.640625 -4.28125 C 4.640625 -4.390625 4.53125 -4.390625 4.53125 -4.390625 C 4.453125 -4.390625 4.421875 -4.359375 4.375 -4.28125 C 4.078125 -3.796875 3.875 -3.640625 3.625 -3.640625 C 3.390625 -3.640625 3.28125 -3.796875 3.125 -3.953125 C 2.9375 -4.1875 2.765625 -4.390625 2.4375 -4.390625 C 1.703125 -4.390625 1.234375 -3.46875 1.234375 -3.25 C 1.234375 -3.203125 1.265625 -3.140625 1.359375 -3.140625 C 1.453125 -3.140625 1.46875 -3.1875 1.484375 -3.25 C 1.671875 -3.703125 2.25 -3.71875 2.328125 -3.71875 C 2.546875 -3.71875 2.734375 -3.65625 2.953125 -3.578125 C 3.359375 -3.421875 3.46875 -3.421875 3.71875 -3.421875 C 3.359375 -3 2.53125 -2.28125 2.34375 -2.125 L 1.453125 -1.296875 C 0.78125 -0.625 0.421875 -0.0625 0.421875 0.015625 C 0.421875 0.109375 0.546875 0.109375 0.546875 0.109375 C 0.625 0.109375 0.640625 0.09375 0.703125 -0.015625 C 0.9375 -0.359375 1.234375 -0.640625 1.546875 -0.640625 C 1.78125 -0.640625 1.875 -0.546875 2.125 -0.265625 C 2.296875 -0.046875 2.46875 0.109375 2.765625 0.109375 C 3.734375 0.109375 4.3125 -1.15625 4.3125 -1.421875 Z M 4.3125 -1.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 3.28125 2.375 C 3.28125 2.34375 3.28125 2.328125 3.109375 2.15625 C 1.875 0.90625 1.5625 -0.96875 1.5625 -2.484375 C 1.5625 -4.203125 1.9375 -5.9375 3.15625 -7.171875 C 3.28125 -7.296875 3.28125 -7.3125 3.28125 -7.34375 C 3.28125 -7.40625 3.25 -7.4375 3.1875 -7.4375 C 3.078125 -7.4375 2.1875 -6.765625 1.609375 -5.5 C 1.09375 -4.421875 0.984375 -3.3125 0.984375 -2.484375 C 0.984375 -1.703125 1.09375 -0.5 1.640625 0.609375 C 2.234375 1.828125 3.078125 2.484375 3.1875 2.484375 C 3.25 2.484375 3.28125 2.453125 3.28125 2.375 Z M 3.28125 2.375 "/>
</symbol>
<symbol overflow="visible" id="glyph1-2">
<path style="stroke:none;" d="M 2.875 -2.484375 C 2.875 -3.25 2.765625 -4.453125 2.21875 -5.578125 C 1.625 -6.796875 0.765625 -7.4375 0.671875 -7.4375 C 0.609375 -7.4375 0.5625 -7.40625 0.5625 -7.34375 C 0.5625 -7.3125 0.5625 -7.296875 0.75 -7.109375 C 1.71875 -6.125 2.296875 -4.546875 2.296875 -2.484375 C 2.296875 -0.78125 1.921875 0.96875 0.6875 2.21875 C 0.5625 2.328125 0.5625 2.34375 0.5625 2.375 C 0.5625 2.4375 0.609375 2.484375 0.671875 2.484375 C 0.765625 2.484375 1.65625 1.8125 2.25 0.546875 C 2.75 -0.546875 2.875 -1.640625 2.875 -2.484375 Z M 2.875 -2.484375 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph2-1">
<path style="stroke:none;" d="M 3.28125 0 L 3.28125 -0.25 L 3.015625 -0.25 C 2.328125 -0.25 2.328125 -0.34375 2.328125 -0.5625 L 2.328125 -4.40625 C 2.328125 -4.59375 2.3125 -4.609375 2.109375 -4.609375 C 1.671875 -4.171875 1.046875 -4.15625 0.75 -4.15625 L 0.75 -3.90625 C 0.921875 -3.90625 1.375 -3.90625 1.765625 -4.109375 L 1.765625 -0.5625 C 1.765625 -0.34375 1.765625 -0.25 1.0625 -0.25 L 0.8125 -0.25 L 0.8125 0 L 2.046875 -0.03125 Z M 3.28125 0 "/>
</symbol>
<symbol overflow="visible" id="glyph2-2">
<path style="stroke:none;" d="M 3.5 -1.265625 L 3.265625 -1.265625 C 3.25 -1.109375 3.171875 -0.703125 3.09375 -0.625 C 3.03125 -0.59375 2.5 -0.59375 2.40625 -0.59375 L 1.125 -0.59375 C 1.859375 -1.234375 2.09375 -1.421875 2.515625 -1.75 C 3.03125 -2.171875 3.5 -2.59375 3.5 -3.25 C 3.5 -4.09375 2.765625 -4.609375 1.875 -4.609375 C 1.015625 -4.609375 0.4375 -4 0.4375 -3.359375 C 0.4375 -3.015625 0.734375 -2.96875 0.8125 -2.96875 C 0.96875 -2.96875 1.171875 -3.09375 1.171875 -3.34375 C 1.171875 -3.46875 1.125 -3.71875 0.765625 -3.71875 C 0.984375 -4.203125 1.453125 -4.359375 1.78125 -4.359375 C 2.46875 -4.359375 2.828125 -3.8125 2.828125 -3.25 C 2.828125 -2.65625 2.40625 -2.171875 2.171875 -1.921875 L 0.5 -0.265625 C 0.4375 -0.203125 0.4375 -0.1875 0.4375 0 L 3.296875 0 Z M 3.5 -1.265625 "/>
</symbol>
<symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph3-1">
<path style="stroke:none;" d="M 5.40625 -2.515625 C 5.40625 -3.03125 5.109375 -3.0625 5.0625 -3.0625 C 4.890625 -3.0625 4.6875 -2.875 4.6875 -2.703125 C 4.6875 -2.578125 4.765625 -2.53125 4.8125 -2.484375 C 4.96875 -2.34375 5.0625 -2.15625 5.0625 -1.921875 C 5.0625 -1.84375 4.765625 -0.125 3.890625 -0.125 C 3.328125 -0.125 3.328125 -0.625 3.328125 -0.75 C 3.328125 -0.921875 3.359375 -1.046875 3.453125 -1.4375 L 3.65625 -2.21875 C 3.703125 -2.40625 3.78125 -2.734375 3.78125 -2.765625 C 3.78125 -2.90625 3.671875 -2.984375 3.546875 -2.984375 C 3.421875 -2.984375 3.296875 -2.90625 3.25 -2.78125 C 3.234375 -2.734375 3.15625 -2.4375 3.109375 -2.265625 C 3.015625 -1.875 3.015625 -1.859375 2.90625 -1.46875 C 2.828125 -1.09375 2.8125 -1.03125 2.796875 -0.828125 C 2.828125 -0.6875 2.78125 -0.5625 2.609375 -0.359375 C 2.515625 -0.25 2.375 -0.125 2.140625 -0.125 C 1.875 -0.125 1.515625 -0.21875 1.515625 -0.765625 C 1.515625 -1.109375 1.71875 -1.625 1.859375 -1.984375 C 1.96875 -2.296875 2 -2.359375 2 -2.46875 C 2 -2.796875 1.71875 -3.0625 1.34375 -3.0625 C 0.640625 -3.0625 0.328125 -2.109375 0.328125 -2 C 0.328125 -1.90625 0.421875 -1.90625 0.4375 -1.90625 C 0.546875 -1.90625 0.546875 -1.9375 0.5625 -2.015625 C 0.75 -2.59375 1.046875 -2.859375 1.3125 -2.859375 C 1.4375 -2.859375 1.484375 -2.78125 1.484375 -2.625 C 1.484375 -2.46875 1.421875 -2.3125 1.390625 -2.21875 C 1 -1.203125 1 -1.0625 1 -0.859375 C 1 -0.03125 1.734375 0.0625 2.109375 0.0625 C 2.25 0.0625 2.59375 0.0625 2.90625 -0.390625 C 3.0625 -0.078125 3.4375 0.0625 3.859375 0.0625 C 4.484375 0.0625 4.78125 -0.46875 4.921875 -0.75 C 5.21875 -1.328125 5.40625 -2.203125 5.40625 -2.515625 Z M 5.40625 -2.515625 "/>
</symbol>
<symbol overflow="visible" id="glyph4-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph4-1">
<path style="stroke:none;" d="M 11.53125 -4.265625 C 11.53125 -4.578125 11.265625 -4.578125 11 -4.578125 L 6.46875 -4.578125 L 6.46875 -9.125 C 6.46875 -9.359375 6.46875 -9.65625 6.171875 -9.65625 C 5.859375 -9.65625 5.859375 -9.375 5.859375 -9.125 L 5.859375 -4.578125 L 1.3125 -4.578125 C 1.078125 -4.578125 0.78125 -4.578125 0.78125 -4.28125 C 0.78125 -3.984375 1.0625 -3.984375 1.3125 -3.984375 L 5.859375 -3.984375 L 5.859375 0.5625 C 5.859375 0.8125 5.859375 1.09375 6.15625 1.09375 C 6.46875 1.09375 6.46875 0.828125 6.46875 0.5625 L 6.46875 -3.984375 L 11 -3.984375 C 11.25 -3.984375 11.53125 -3.984375 11.53125 -4.265625 Z M 11.53125 -4.265625 "/>
</symbol>
<symbol overflow="visible" id="glyph5-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph5-1">
<path style="stroke:none;" d="M 6.890625 -2.484375 C 6.890625 -2.671875 6.703125 -2.671875 6.5625 -2.671875 L 1.15625 -2.671875 C 1.015625 -2.671875 0.828125 -2.671875 0.828125 -2.484375 C 0.828125 -2.28125 1.015625 -2.28125 1.15625 -2.28125 L 6.5625 -2.28125 C 6.703125 -2.28125 6.890625 -2.28125 6.890625 -2.484375 Z M 6.890625 -2.484375 "/>
</symbol>
<symbol overflow="visible" id="glyph6-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph6-1">
<path style="stroke:none;" d="M 2.078125 -3.5 C 2.078125 -3.71875 1.890625 -3.875 1.671875 -3.875 C 1.390625 -3.875 1.3125 -3.65625 1.296875 -3.5625 L 0.375 -0.5625 L 0.328125 -0.4375 C 0.328125 -0.359375 0.546875 -0.28125 0.609375 -0.28125 C 0.65625 -0.28125 0.6875 -0.3125 0.703125 -0.390625 L 2.015625 -3.28125 C 2.046875 -3.34375 2.078125 -3.40625 2.078125 -3.5 Z M 2.078125 -3.5 "/>
</symbol>
</g>
<clipPath id="clip1">
<path d="M 67 139 L 103 139 L 103 169.617188 L 67 169.617188 Z M 67 139 "/>
</clipPath>
<clipPath id="clip2">
<path d="M 89 138 L 123 138 L 123 169.617188 L 89 169.617188 Z M 89 138 "/>
</clipPath>
<clipPath id="clip3">
<path d="M 148 24 L 169.476562 24 L 169.476562 57 L 148 57 Z M 148 24 "/>
</clipPath>
<clipPath id="clip4">
<path d="M 148 58 L 169.476562 58 L 169.476562 91 L 148 91 Z M 148 58 "/>
</clipPath>
</defs>
<g id="surface1">
<path style="fill-rule:nonzero;fill:rgb(79.998779%,79.998779%,79.998779%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,2.98883;stroke-miterlimit:10;" d="M -63.78048 -56.692267 L 63.781634 -56.692267 L 63.781634 56.693227 L -63.78048 56.693227 Z M -63.78048 -56.692267 " transform="matrix(0.995532,0,0,-0.995532,84.737707,74.506337)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-1" x="74.683827" y="11.290045"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="82.429068" y="11.290045"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="86.285759" y="11.290045"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="90.934894" y="11.290045"/>
</g>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 9.919895 20.143209 L 43.939075 20.143209 L 43.939075 48.488601 L 9.919895 48.488601 Z M 9.919895 20.143209 " transform="matrix(0.995532,0,0,-0.995532,84.737707,74.506337)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="98.457135" y="42.824522"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="107.824098" y="44.311847"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="112.273131" y="42.824522"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="116.130818" y="42.824522"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="120.779953" y="42.824522"/>
</g>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 9.919895 -14.174178 L 43.939075 -14.174178 L 43.939075 14.175138 L 9.919895 14.175138 Z M 9.919895 -14.174178 " transform="matrix(0.995532,0,0,-0.995532,84.737707,74.506337)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-3" x="98.457135" y="76.986208"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="107.824098" y="78.473533"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="112.273131" y="76.986208"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="116.130818" y="76.986208"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="120.779953" y="76.986208"/>
</g>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.176608 -48.487641 L 43.939075 -48.487641 L 43.939075 -20.142249 L 6.176608 -20.142249 Z M 6.176608 -48.487641 " transform="matrix(0.995532,0,0,-0.995532,84.737707,74.506337)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="94.19128" y="111.147894"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="102.435282" y="112.635219"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph3-1" x="106.389536" y="112.635219"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="112.809723" y="111.147894"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="116.666414" y="111.147894"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="121.315549" y="111.147894"/>
</g>
<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -18.923818 34.315905 C -18.923818 39.817046 -23.385157 44.278384 -28.886297 44.278384 C -34.387438 44.278384 -38.848777 39.817046 -38.848777 34.315905 C -38.848777 28.814764 -34.387438 24.353425 -28.886297 24.353425 C -23.385157 24.353425 -18.923818 28.814764 -18.923818 34.315905 Z M -18.923818 34.315905 " transform="matrix(0.995532,0,0,-0.995532,84.737707,74.506337)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph4-1" x="49.812447" y="44.492038"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph5-1" x="46.283286" y="58.032271"/>
</g>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 67.804688 168.625 L 101.667969 168.625 L 101.667969 140.40625 L 67.804688 140.40625 Z M 67.804688 168.625 "/>
<g clip-path="url(#clip1)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -17.009013 -94.541057 L 17.006243 -94.541057 L 17.006243 -66.195664 L -17.009013 -66.195664 Z M -17.009013 -94.541057 " transform="matrix(0.995532,0,0,-0.995532,84.737707,74.506337)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-4" x="72.208934" y="157.002105"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph6-1" x="81.259317" y="153.403257"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="80.453932" y="159.464056"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-1" x="84.902965" y="157.002105"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-2" x="88.759657" y="157.002105"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph1-2" x="93.408792" y="157.002105"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -84.12136 34.315905 L -43.482762 34.315905 " transform="matrix(0.995532,0,0,-0.995532,84.737707,74.506337)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.051825 0.000494967 L 1.610105 1.683797 L 3.08937 0.000494967 L 1.610105 -1.682807 Z M 6.051825 0.000494967 " transform="matrix(0.995532,0,0,-0.995532,38.623651,40.344243)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-5" x="4.795478" y="36.543709"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -17.507333 -80.368361 L -74.198118 -80.368361 L -74.198118 -0.001482 L 4.791513 -0.001482 " transform="matrix(0.995532,0,0,-0.995532,84.737707,74.506337)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.05377 -0.001482 L 1.608126 1.68182 L 3.087392 -0.001482 L 1.608126 -1.684784 Z M 6.05377 -0.001482 " transform="matrix(0.995532,0,0,-0.995532,86.680309,74.506337)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-6" x="8.031953" y="70.705395"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -28.886297 -0.001482 L -28.886297 19.71944 " transform="matrix(0.995532,0,0,-0.995532,84.737707,74.506337)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.052447 0.000127209 L 1.606803 1.683429 L 3.086069 0.000127209 L 1.606803 -1.683175 Z M 6.052447 0.000127209 " transform="matrix(0,-0.995532,-0.995532,0,55.980595,57.701187)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 57.964844 74.507812 C 57.964844 73.410156 57.074219 72.523438 55.980469 72.523438 C 54.886719 72.523438 53.996094 73.410156 53.996094 74.507812 C 53.996094 75.601562 54.886719 76.488281 55.980469 76.488281 C 57.074219 76.488281 57.964844 75.601562 57.964844 74.507812 Z M 57.964844 74.507812 "/>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -18.923818 34.315905 L 4.791513 34.315905 " transform="matrix(0.995532,0,0,-0.995532,84.737707,74.506337)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.05377 0.000494967 L 1.608126 1.683797 L 3.087392 0.000494967 L 1.608126 -1.682807 Z M 6.05377 0.000494967 " transform="matrix(0.995532,0,0,-0.995532,86.680309,40.344243)"/>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -55.858366 34.315905 L -55.858366 -34.314945 L 1.044303 -34.314945 " transform="matrix(0.995532,0,0,-0.995532,84.737707,74.506337)"/>
<path style="fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.052679 0.000464817 L 1.607036 1.683767 L 3.086301 0.000464817 L 1.607036 -1.682837 Z M 6.052679 0.000464817 " transform="matrix(0.995532,0,0,-0.995532,82.950926,108.668431)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 31.113281 40.34375 C 31.113281 39.25 30.226562 38.359375 29.128906 38.359375 C 28.035156 38.359375 27.144531 39.25 27.144531 40.34375 C 27.144531 41.441406 28.035156 42.328125 29.128906 42.328125 C 30.226562 42.328125 31.113281 41.441406 31.113281 40.34375 Z M 31.113281 40.34375 "/>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 44.437395 -34.314945 L 74.199272 -34.314945 L 74.199272 -80.368361 L 22.138548 -80.368361 " transform="matrix(0.995532,0,0,-0.995532,84.737707,74.506337)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 103.578125 154.515625 L 108.003906 156.191406 L 106.53125 154.515625 L 108.003906 152.839844 Z M 103.578125 154.515625 "/>
<g clip-path="url(#clip2)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.053288 0.000930552 L 1.607644 1.684233 L 3.08691 0.000930552 L 1.607644 -1.682371 Z M 6.053288 0.000930552 " transform="matrix(-0.995532,0,0,0.995532,109.604368,154.514699)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-7" x="156.022787" y="104.867082"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 44.437395 34.315905 L 79.488529 34.315905 " transform="matrix(0.995532,0,0,-0.995532,84.737707,74.506337)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 167.070312 40.34375 L 162.644531 38.667969 L 164.117188 40.34375 L 162.644531 42.019531 Z M 167.070312 40.34375 "/>
<g clip-path="url(#clip3)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.053055 0.000494967 L 1.607412 1.683797 L 3.086677 0.000494967 L 1.607412 -1.682807 Z M 6.053055 0.000494967 " transform="matrix(0.995532,0,0,-0.995532,161.044301,40.344243)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-8" x="155.618601" y="35.055389"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-1" x="160.230902" y="36.543709"/>
</g>
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 44.437395 -0.001482 L 79.488529 -0.001482 " transform="matrix(0.995532,0,0,-0.995532,84.737707,74.506337)"/>
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 167.070312 74.507812 L 162.644531 72.832031 L 164.117188 74.507812 L 162.644531 76.183594 Z M 167.070312 74.507812 "/>
<g clip-path="url(#clip4)" clip-rule="nonzero">
<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.053055 -0.001482 L 1.607412 1.68182 L 3.086677 -0.001482 L 1.607412 -1.684784 Z M 6.053055 -0.001482 " transform="matrix(0.995532,0,0,-0.995532,161.044301,74.506337)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph0-8" x="155.618601" y="69.217075"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
<use xlink:href="#glyph2-2" x="160.230902" y="70.705395"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

View File

@ -3,7 +3,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-11-12 jeu. 10:44 -->
<!-- 2020-12-11 ven. 14:05 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Complementary Filters Shaping Using \(\mathcal{H}_\infty\) Synthesis - Matlab Computation</title>
<meta name="generator" content="Org mode" />
@ -30,29 +30,42 @@
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org8213c74">1. H-Infinity synthesis of complementary filters</a>
<li><a href="#orga86008b">1. H-Infinity synthesis of complementary filters</a>
<ul>
<li><a href="#org106a9c7">1.1. Synthesis Architecture</a></li>
<li><a href="#org986f54a">1.2. Design of Weighting Function</a></li>
<li><a href="#orge3bcbcd">1.3. H-Infinity Synthesis</a></li>
<li><a href="#org93a0167">1.4. Obtained Complementary Filters</a></li>
<li><a href="#orga8d0882">1.1. Synthesis Architecture</a></li>
<li><a href="#orgf309349">1.2. Design of Weighting Function</a></li>
<li><a href="#org3d519e3">1.3. H-Infinity Synthesis</a></li>
<li><a href="#org42911cd">1.4. Obtained Complementary Filters</a></li>
</ul>
</li>
<li><a href="#org2f5413b">2. Generating 3 complementary filters</a>
<li><a href="#org1cd882b">2. Generating 3 complementary filters</a>
<ul>
<li><a href="#org180c831">2.1. Theory</a></li>
<li><a href="#orgb4c7909">2.2. Weights</a></li>
<li><a href="#org5a36c59">2.3. H-Infinity Synthesis</a></li>
<li><a href="#orgf8d8907">2.4. Obtained Complementary Filters</a></li>
<li><a href="#org201b962">2.1. Theory</a></li>
<li><a href="#orgbb81a3a">2.2. Weights</a></li>
<li><a href="#orgc782a41">2.3. H-Infinity Synthesis</a></li>
<li><a href="#orgbe6c26a">2.4. Obtained Complementary Filters</a></li>
</ul>
</li>
<li><a href="#org1236499">3. Implement complementary filters for LIGO</a>
<li><a href="#orgfb4a473">3. Implement complementary filters for LIGO</a>
<ul>
<li><a href="#org2d8dbcc">3.1. Specifications</a></li>
<li><a href="#orga974b40">3.2. FIR Filter</a></li>
<li><a href="#org33657ff">3.3. Weights</a></li>
<li><a href="#orgb74a3c5">3.4. H-Infinity Synthesis</a></li>
<li><a href="#org8b29f2c">3.5. Compare FIR and H-Infinity Filters</a></li>
<li><a href="#org0a64590">3.1. Specifications</a></li>
<li><a href="#org5187f2d">3.2. FIR Filter</a></li>
<li><a href="#org6e83a71">3.3. Weights</a></li>
<li><a href="#org56349cf">3.4. H-Infinity Synthesis</a></li>
<li><a href="#org3ef818f">3.5. Compare FIR and H-Infinity Filters</a></li>
</ul>
</li>
<li><a href="#org6fa1123">4. Alternative Synthesis</a>
<ul>
<li><a href="#org1bb8ee7">4.1. Two generalized plants</a></li>
<li><a href="#orga117463">4.2. Shaping the Low pass filter or the high pass filter?</a></li>
</ul>
</li>
<li><a href="#orgf082879">5. Impose a positive slope at DC or a negative slope at infinite frequency</a>
<ul>
<li><a href="#org96df1d1">5.1. Manually shift zeros to the origin after synthesis</a></li>
<li><a href="#org6b92ce0">5.2. Imposing a positive slope at DC during the synthesis phase</a></li>
<li><a href="#org71e3235">5.3. Imposing a negative slope at infinity frequency during the synthesis phase</a></li>
</ul>
</li>
</ul>
@ -77,25 +90,25 @@ To achieve this, the sensors included in the filter should complement one anothe
This document is divided into several sections:
</p>
<ul class="org-ul">
<li>in section <a href="#org181592e">1</a>, the \(\mathcal{H}_\infty\) synthesis is used for generating two complementary filters</li>
<li>in section <a href="#org670207e">2</a>, a method using the \(\mathcal{H}_\infty\) synthesis is proposed to shape three of more complementary filters</li>
<li>in section <a href="#org3725bd2">3</a>, the \(\mathcal{H}_\infty\) synthesis is used and compared with FIR complementary filters used for LIGO</li>
<li>in section <a href="#orge265c61">1</a>, the \(\mathcal{H}_\infty\) synthesis is used for generating two complementary filters</li>
<li>in section <a href="#org0f5d922">2</a>, a method using the \(\mathcal{H}_\infty\) synthesis is proposed to shape three of more complementary filters</li>
<li>in section <a href="#org2c84916">3</a>, the \(\mathcal{H}_\infty\) synthesis is used and compared with FIR complementary filters used for LIGO</li>
</ul>
<div class="note" id="orgf9dc18e">
<div class="note" id="org9abbfdc">
<p>
Add the Matlab code use to obtain the results presented in the paper are accessible <a href="matlab.zip">here</a> and presented below.
</p>
</div>
<div id="outline-container-org8213c74" class="outline-2">
<h2 id="org8213c74"><span class="section-number-2">1</span> H-Infinity synthesis of complementary filters</h2>
<div id="outline-container-orga86008b" class="outline-2">
<h2 id="orga86008b"><span class="section-number-2">1</span> H-Infinity synthesis of complementary filters</h2>
<div class="outline-text-2" id="text-1">
<p>
<a id="org181592e"></a>
<a id="orge265c61"></a>
</p>
<div class="note" id="orgfba238b">
<div class="note" id="org7b6c965">
<p>
The Matlab file corresponding to this section is accessible <a href="matlab/h_inf_synthesis_complementary_filters.m">here</a>.
</p>
@ -103,8 +116,8 @@ The Matlab file corresponding to this section is accessible <a href="matlab/h_in
</div>
</div>
<div id="outline-container-org106a9c7" class="outline-3">
<h3 id="org106a9c7"><span class="section-number-3">1.1</span> Synthesis Architecture</h3>
<div id="outline-container-orga8d0882" class="outline-3">
<h3 id="orga8d0882"><span class="section-number-3">1.1</span> Synthesis Architecture</h3>
<div class="outline-text-3" id="text-1-1">
<p>
We here synthesize two complementary filters using the \(\mathcal{H}_\infty\) synthesis.
@ -112,18 +125,18 @@ The goal is to specify upper bounds on the norms of the two complementary filter
</p>
<p>
In order to do so, we use the generalized plant shown on figure <a href="#orgb57e788">1</a> where \(W_1(s)\) and \(W_2(s)\) are weighting transfer functions that will be used to shape \(H_1(s)\) and \(H_2(s)\) respectively.
In order to do so, we use the generalized plant shown on figure <a href="#orge741156">1</a> where \(W_1(s)\) and \(W_2(s)\) are weighting transfer functions that will be used to shape \(H_1(s)\) and \(H_2(s)\) respectively.
</p>
<div id="orgb57e788" class="figure">
<div id="orge741156" class="figure">
<p><img src="figs-tikz/h_infinity_robust_fusion.png" alt="h_infinity_robust_fusion.png" />
</p>
<p><span class="figure-number">Figure 1: </span>\(\mathcal{H}_\infty\) synthesis of the complementary filters</p>
</div>
<p>
The \(\mathcal{H}_\infty\) synthesis applied on this generalized plant will give a transfer function \(H_2\) (figure <a href="#orgb57e788">1</a>) such that the \(\mathcal{H}_\infty\) norm of the transfer function from \(w\) to \([z_1,\ z_2]\) is less than one:
The \(\mathcal{H}_\infty\) synthesis applied on this generalized plant will give a transfer function \(H_2\) (figure <a href="#orge741156">1</a>) such that the \(\mathcal{H}_\infty\) norm of the transfer function from \(w\) to \([z_1,\ z_2]\) is less than one:
\[ \left\| \begin{array}{c} (1 - H_2(s)) W_1(s) \\ H_2(s) W_2(s) \end{array} \right\|_\infty < 1 \]
</p>
@ -143,8 +156,8 @@ We then see that \(W_1(s)\) and \(W_2(s)\) can be used to shape both \(H_1(s)\)
</div>
</div>
<div id="outline-container-org986f54a" class="outline-3">
<h3 id="org986f54a"><span class="section-number-3">1.2</span> Design of Weighting Function</h3>
<div id="outline-container-orgf309349" class="outline-3">
<h3 id="orgf309349"><span class="section-number-3">1.2</span> Design of Weighting Function</h3>
<div class="outline-text-3" id="text-1-2">
<p>
A formula is proposed to help the design of the weighting functions:
@ -168,14 +181,14 @@ The parameters permits to specify:
</ul>
<p>
The general shape of a weighting function generated using the formula is shown in figure <a href="#org5840815">2</a>.
The general shape of a weighting function generated using the formula is shown in figure <a href="#org18f93a4">2</a>.
</p>
<div id="org5840815" class="figure">
<p><img src="figs-tikz/weight_formula.png" alt="weight_formula.png" />
<div id="org18f93a4" class="figure">
<p><img src="figs/weight_formula.png" alt="weight_formula.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Amplitude of the proposed formula for the weighting functions</p>
<p><span class="figure-number">Figure 2: </span>Gain of the Weighting Function formula</p>
</div>
<div class="org-src-container">
@ -188,7 +201,7 @@ W2 = (((1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((
</div>
<div id="org518a313" class="figure">
<div id="org54a46b0" class="figure">
<p><img src="figs/weights_W1_W2.png" alt="weights_W1_W2.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Weights on the complementary filters \(W_1\) and \(W_2\) and the associated performance weights</p>
@ -196,8 +209,8 @@ W2 = (((1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((
</div>
</div>
<div id="outline-container-orge3bcbcd" class="outline-3">
<h3 id="orge3bcbcd"><span class="section-number-3">1.3</span> H-Infinity Synthesis</h3>
<div id="outline-container-org3d519e3" class="outline-3">
<h3 id="org3d519e3"><span class="section-number-3">1.3</span> H-Infinity Synthesis</h3>
<div class="outline-text-3" id="text-1-3">
<p>
We define the generalized plant \(P\) on matlab.
@ -217,7 +230,7 @@ And we do the \(\mathcal{H}_\infty\) synthesis using the <code>hinfsyn</code> co
</pre>
</div>
<pre class="example" id="org819e288">
<pre class="example" id="orgb213b31">
[H2, ~, gamma, ~] = hinfsyn(P, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
Resetting value of Gamma min based on D_11, D_12, D_21 terms
@ -251,7 +264,7 @@ Test bounds: 0.1000 &lt; gamma &lt;= 1050.0000
</pre>
<p>
We then define the high pass filter \(H_1 = 1 - H_2\). The bode plot of both \(H_1\) and \(H_2\) is shown on figure <a href="#orgf63dab4">4</a>.
We then define the high pass filter \(H_1 = 1 - H_2\). The bode plot of both \(H_1\) and \(H_2\) is shown on figure <a href="#orgc79ce80">4</a>.
</p>
<div class="org-src-container">
@ -261,15 +274,15 @@ We then define the high pass filter \(H_1 = 1 - H_2\). The bode plot of both \(H
</div>
</div>
<div id="outline-container-org93a0167" class="outline-3">
<h3 id="org93a0167"><span class="section-number-3">1.4</span> Obtained Complementary Filters</h3>
<div id="outline-container-org42911cd" class="outline-3">
<h3 id="org42911cd"><span class="section-number-3">1.4</span> Obtained Complementary Filters</h3>
<div class="outline-text-3" id="text-1-4">
<p>
The obtained complementary filters are shown on figure <a href="#orgf63dab4">4</a>.
The obtained complementary filters are shown on figure <a href="#orgc79ce80">4</a>.
</p>
<div id="orgf63dab4" class="figure">
<div id="orgc79ce80" class="figure">
<p><img src="figs/hinf_filters_results.png" alt="hinf_filters_results.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Obtained complementary filters using \(\mathcal{H}_\infty\) synthesis</p>
@ -278,13 +291,13 @@ The obtained complementary filters are shown on figure <a href="#orgf63dab4">4</
</div>
</div>
<div id="outline-container-org2f5413b" class="outline-2">
<h2 id="org2f5413b"><span class="section-number-2">2</span> Generating 3 complementary filters</h2>
<div id="outline-container-org1cd882b" class="outline-2">
<h2 id="org1cd882b"><span class="section-number-2">2</span> Generating 3 complementary filters</h2>
<div class="outline-text-2" id="text-2">
<p>
<a id="org670207e"></a>
<a id="org0f5d922"></a>
</p>
<div class="note" id="org9dc9516">
<div class="note" id="org7c35287">
<p>
The Matlab file corresponding to this section is accessible <a href="matlab/three_comp_filters.m">here</a>.
</p>
@ -292,8 +305,8 @@ The Matlab file corresponding to this section is accessible <a href="matlab/thre
</div>
</div>
<div id="outline-container-org180c831" class="outline-3">
<h3 id="org180c831"><span class="section-number-3">2.1</span> Theory</h3>
<div id="outline-container-org201b962" class="outline-3">
<h3 id="org201b962"><span class="section-number-3">2.1</span> Theory</h3>
<div class="outline-text-3" id="text-2-1">
<p>
We want:
@ -306,11 +319,11 @@ We want:
\end{align*}
<p>
For that, we use the \(\mathcal{H}_\infty\) synthesis with the architecture shown on figure <a href="#orga622494">5</a>.
For that, we use the \(\mathcal{H}_\infty\) synthesis with the architecture shown on figure <a href="#org86ebebf">5</a>.
</p>
<div id="orga622494" class="figure">
<div id="org86ebebf" class="figure">
<p><img src="figs-tikz/comp_filter_three_hinf.png" alt="comp_filter_three_hinf.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Generalized architecture for generating 3 complementary filters</p>
@ -331,8 +344,8 @@ And thus if we choose \(H_1 = 1 - H_2 - H_3\) we have solved the problem.
</div>
</div>
<div id="outline-container-orgb4c7909" class="outline-3">
<h3 id="orgb4c7909"><span class="section-number-3">2.2</span> Weights</h3>
<div id="outline-container-orgbb81a3a" class="outline-3">
<h3 id="orgbb81a3a"><span class="section-number-3">2.2</span> Weights</h3>
<div class="outline-text-3" id="text-2-2">
<p>
First we define the weights.
@ -349,7 +362,7 @@ W3 = (((1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((
</div>
<div id="org9526a8b" class="figure">
<div id="org6ef9224" class="figure">
<p><img src="figs/three_weighting_functions.png" alt="three_weighting_functions.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Three weighting functions used for the \(\mathcal{H}_\infty\) synthesis of the complementary filters</p>
@ -357,8 +370,8 @@ W3 = (((1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((
</div>
</div>
<div id="outline-container-org5a36c59" class="outline-3">
<h3 id="org5a36c59"><span class="section-number-3">2.3</span> H-Infinity Synthesis</h3>
<div id="outline-container-orgc782a41" class="outline-3">
<h3 id="orgc782a41"><span class="section-number-3">2.3</span> H-Infinity Synthesis</h3>
<div class="outline-text-3" id="text-2-3">
<p>
Then we create the generalized plant <code>P</code>.
@ -379,7 +392,7 @@ And we do the \(\mathcal{H}_\infty\) synthesis.
</pre>
</div>
<pre class="example" id="orgd289daa">
<pre class="example" id="orga35c0a2">
[H, ~, gamma, ~] = hinfsyn(P, 1, 2,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
Resetting value of Gamma min based on D_11, D_12, D_21 terms
@ -414,8 +427,8 @@ Test bounds: 0.1000 &lt; gamma &lt;= 1050.0000
</div>
</div>
<div id="outline-container-orgf8d8907" class="outline-3">
<h3 id="orgf8d8907"><span class="section-number-3">2.4</span> Obtained Complementary Filters</h3>
<div id="outline-container-orgbe6c26a" class="outline-3">
<h3 id="orgbe6c26a"><span class="section-number-3">2.4</span> Obtained Complementary Filters</h3>
<div class="outline-text-3" id="text-2-4">
<p>
The obtained filters are:
@ -428,7 +441,7 @@ H1 = 1 <span class="org-type">-</span> H2 <span class="org-type">-</span> H3;
</div>
<div id="orgf8995ee" class="figure">
<div id="orga85736d" class="figure">
<p><img src="figs/three_complementary_filters_results.png" alt="three_complementary_filters_results.png" />
</p>
<p><span class="figure-number">Figure 7: </span>The three complementary filters obtained after \(\mathcal{H}_\infty\) synthesis</p>
@ -437,13 +450,13 @@ H1 = 1 <span class="org-type">-</span> H2 <span class="org-type">-</span> H3;
</div>
</div>
<div id="outline-container-org1236499" class="outline-2">
<h2 id="org1236499"><span class="section-number-2">3</span> Implement complementary filters for LIGO</h2>
<div id="outline-container-orgfb4a473" class="outline-2">
<h2 id="orgfb4a473"><span class="section-number-2">3</span> Implement complementary filters for LIGO</h2>
<div class="outline-text-2" id="text-3">
<p>
<a id="org3725bd2"></a>
<a id="org2c84916"></a>
</p>
<div class="note" id="orgef062eb">
<div class="note" id="org4890f37">
<p>
The Matlab file corresponding to this section is accessible <a href="matlab/comp_filters_ligo.m">here</a>.
</p>
@ -459,8 +472,8 @@ The FIR complementary filters designed in (<a href="#citeproc_bib_item_1">Hua 20
</p>
</div>
<div id="outline-container-org2d8dbcc" class="outline-3">
<h3 id="org2d8dbcc"><span class="section-number-3">3.1</span> Specifications</h3>
<div id="outline-container-org0a64590" class="outline-3">
<h3 id="org0a64590"><span class="section-number-3">3.1</span> Specifications</h3>
<div class="outline-text-3" id="text-3-1">
<p>
The specifications for the filters are:
@ -473,11 +486,11 @@ The specifications for the filters are:
</ol>
<p>
The specifications are translated in upper bounds of the complementary filters are shown on figure <a href="#orge86890c">8</a>.
The specifications are translated in upper bounds of the complementary filters are shown on figure <a href="#org40b6368">8</a>.
</p>
<div id="orge86890c" class="figure">
<div id="org40b6368" class="figure">
<p><img src="figs/ligo_specifications.png" alt="ligo_specifications.png" />
</p>
<p><span class="figure-number">Figure 8: </span>Specification for the LIGO complementary filters</p>
@ -485,8 +498,8 @@ The specifications are translated in upper bounds of the complementary filters a
</div>
</div>
<div id="outline-container-orga974b40" class="outline-3">
<h3 id="orga974b40"><span class="section-number-3">3.2</span> FIR Filter</h3>
<div id="outline-container-org5187f2d" class="outline-3">
<h3 id="org5187f2d"><span class="section-number-3">3.2</span> FIR Filter</h3>
<div class="outline-text-3" id="text-3-2">
<p>
We here try to implement the FIR complementary filter synthesis as explained in (<a href="#citeproc_bib_item_1">Hua 2005</a>).
@ -567,7 +580,7 @@ h = y(2<span class="org-type">:</span>end);
</pre>
</div>
<pre class="example" id="orgbf29758">
<pre class="example" id="org199d33a">
cvx_begin
variable y(n+1,1)
% t
@ -644,7 +657,7 @@ h = y(2:end);
</pre>
<p>
Finally, we compute the filter response over the frequency vector defined and the result is shown on figure <a href="#org6095ba3">9</a> which is very close to the filters obtain in (<a href="#citeproc_bib_item_1">Hua 2005</a>).
Finally, we compute the filter response over the frequency vector defined and the result is shown on figure <a href="#org1807c4b">9</a> which is very close to the filters obtain in (<a href="#citeproc_bib_item_1">Hua 2005</a>).
</p>
<div class="org-src-container">
@ -654,7 +667,7 @@ H = [exp(<span class="org-type">-</span><span class="org-constant">j</span><span
</div>
<div id="org6095ba3" class="figure">
<div id="org1807c4b" class="figure">
<p><img src="figs/fir_filter_ligo.png" alt="fir_filter_ligo.png" />
</p>
<p><span class="figure-number">Figure 9: </span>FIR Complementary filters obtain after convex optimization</p>
@ -662,8 +675,8 @@ H = [exp(<span class="org-type">-</span><span class="org-constant">j</span><span
</div>
</div>
<div id="outline-container-org33657ff" class="outline-3">
<h3 id="org33657ff"><span class="section-number-3">3.3</span> Weights</h3>
<div id="outline-container-org6e83a71" class="outline-3">
<h3 id="org6e83a71"><span class="section-number-3">3.3</span> Weights</h3>
<div class="outline-text-3" id="text-3-3">
<p>
We design weights that will be used for the \(\mathcal{H}_\infty\) synthesis of the complementary filters.
@ -677,11 +690,11 @@ Here are the requirements on the filters:
</ul>
<p>
The bode plot of the weights is shown on figure <a href="#org9b70f72">10</a>.
The bode plot of the weights is shown on figure <a href="#org8999a4f">10</a>.
</p>
<div id="org9b70f72" class="figure">
<div id="org8999a4f" class="figure">
<p><img src="figs/ligo_weights.png" alt="ligo_weights.png" />
</p>
<p><span class="figure-number">Figure 10: </span>Weights for the \(\mathcal{H}_\infty\) synthesis</p>
@ -689,11 +702,11 @@ The bode plot of the weights is shown on figure <a href="#org9b70f72">10</a>.
</div>
</div>
<div id="outline-container-orgb74a3c5" class="outline-3">
<h3 id="orgb74a3c5"><span class="section-number-3">3.4</span> H-Infinity Synthesis</h3>
<div id="outline-container-org56349cf" class="outline-3">
<h3 id="org56349cf"><span class="section-number-3">3.4</span> H-Infinity Synthesis</h3>
<div class="outline-text-3" id="text-3-4">
<p>
We define the generalized plant as shown on figure <a href="#orgb57e788">1</a>.
We define the generalized plant as shown on figure <a href="#orge741156">1</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">P = [0 wL;
@ -710,7 +723,7 @@ And we do the \(\mathcal{H}_\infty\) synthesis using the <code>hinfsyn</code> co
</pre>
</div>
<pre class="example" id="orgc616ee9">
<pre class="example" id="orgd8777e8">
[Hl, ~, gamma, ~] = hinfsyn(P, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
Resetting value of Gamma min based on D_11, D_12, D_21 terms
@ -745,18 +758,18 @@ The high pass filter is defined as \(H_H = 1 - H_L\).
The size of the filters is shown below.
</p>
<pre class="example" id="org2166bb4">
<pre class="example" id="orgc30176a">
size(Hh), size(Hl)
State-space model with 1 outputs, 1 inputs, and 27 states.
State-space model with 1 outputs, 1 inputs, and 27 states.
</pre>
<p>
The bode plot of the obtained filters as shown on figure <a href="#org637c959">11</a>.
The bode plot of the obtained filters as shown on figure <a href="#orgf3626bd">11</a>.
</p>
<div id="org637c959" class="figure">
<div id="orgf3626bd" class="figure">
<p><img src="figs/hinf_synthesis_ligo_results.png" alt="hinf_synthesis_ligo_results.png" />
</p>
<p><span class="figure-number">Figure 11: </span>Obtained complementary filters using the \(\mathcal{H}_\infty\) synthesis</p>
@ -764,15 +777,15 @@ The bode plot of the obtained filters as shown on figure <a href="#org637c959">1
</div>
</div>
<div id="outline-container-org8b29f2c" class="outline-3">
<h3 id="org8b29f2c"><span class="section-number-3">3.5</span> Compare FIR and H-Infinity Filters</h3>
<div id="outline-container-org3ef818f" class="outline-3">
<h3 id="org3ef818f"><span class="section-number-3">3.5</span> Compare FIR and H-Infinity Filters</h3>
<div class="outline-text-3" id="text-3-5">
<p>
Let&rsquo;s now compare the FIR filters designed in (<a href="#citeproc_bib_item_1">Hua 2005</a>) and the one obtained with the \(\mathcal{H}_\infty\) synthesis on figure <a href="#orgf4bf8ca">12</a>.
Let&rsquo;s now compare the FIR filters designed in (<a href="#citeproc_bib_item_1">Hua 2005</a>) and the one obtained with the \(\mathcal{H}_\infty\) synthesis on figure <a href="#orga60b7f8">12</a>.
</p>
<div id="orgf4bf8ca" class="figure">
<div id="orga60b7f8" class="figure">
<p><img src="figs/comp_fir_ligo_hinf.png" alt="comp_fir_ligo_hinf.png" />
</p>
<p><span class="figure-number">Figure 12: </span>Comparison between the FIR filters developped for LIGO and the \(\mathcal{H}_\infty\) complementary filters</p>
@ -781,6 +794,522 @@ Let&rsquo;s now compare the FIR filters designed in (<a href="#citeproc_bib_item
</div>
</div>
<div id="outline-container-org6fa1123" class="outline-2">
<h2 id="org6fa1123"><span class="section-number-2">4</span> Alternative Synthesis</h2>
<div class="outline-text-2" id="text-4">
</div>
<div id="outline-container-org1bb8ee7" class="outline-3">
<h3 id="org1bb8ee7"><span class="section-number-3">4.1</span> Two generalized plants</h3>
<div class="outline-text-3" id="text-4-1">
<p>
In order to synthesize the complementary filter using the proposed method, we can use two alternative generalized plant as shown in Figures <a href="#orgdfb88a5">13</a> and <a href="#orgb41d84e">14</a>.
</p>
\begin{equation}
P_1 = \begin{bmatrix} W_1 & -W_1 \\ 0 & W_2 \\ 1 & 0 \end{bmatrix}
\end{equation}
<div id="orgdfb88a5" class="figure">
<p><img src="figs/h_infinity_arch_1.png" alt="h_infinity_arch_1.png" />
</p>
<p><span class="figure-number">Figure 13: </span>Complementary Filter Synthesis - Conf 1</p>
</div>
\begin{equation}
P_2 = \begin{bmatrix} 0 & W_1 & 1 \\ W_2 & -W_1 & 0 \end{bmatrix}
\end{equation}
<div id="orgb41d84e" class="figure">
<p><img src="figs/h_infinity_arch_2.png" alt="h_infinity_arch_2.png" />
</p>
<p><span class="figure-number">Figure 14: </span>Complementary Filter Synthesis - Conf 2</p>
</div>
<p>
Let&rsquo;s run the \(\mathcal{H}_\infty\) synthesis for both generalized plant using the same weights and see if the obtained filters are the same:
</p>
<div class="org-src-container">
<pre class="src src-matlab">n = 2; w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>11; G0 = 1<span class="org-type">/</span>10; G1 = 1000; Gc = 1<span class="org-type">/</span>2;
W1 = (((1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n))<span class="org-type">/</span>((1<span class="org-type">/</span>G1)<span class="org-type">^</span>(1<span class="org-type">/</span>n)<span class="org-type">*</span>(1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (1<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n)))<span class="org-type">^</span>n;
n = 3; w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>10; G0 = 1000; G1 = 0.1; Gc = 1<span class="org-type">/</span>2;
W2 = (((1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n))<span class="org-type">/</span>((1<span class="org-type">/</span>G1)<span class="org-type">^</span>(1<span class="org-type">/</span>n)<span class="org-type">*</span>(1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (1<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n)))<span class="org-type">^</span>n;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">P1 = [W1 <span class="org-type">-</span>W1;
0 W2;
1 0];
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">[H2, <span class="org-type">~</span>, gamma, <span class="org-type">~</span>] = hinfsyn(P1, 1, 1,<span class="org-string">'TOLGAM'</span>, 0.001, <span class="org-string">'METHOD'</span>, <span class="org-string">'ric'</span>, <span class="org-string">'DISPLAY'</span>, <span class="org-string">'on'</span>);
</pre>
</div>
<pre class="example" id="org80f6d17">
[H2, ~, gamma, ~] = hinfsyn(P1, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
Test bounds: 0.3263 &lt;= gamma &lt;= 1000
gamma X&gt;=0 Y&gt;=0 rho(XY)&lt;1 p/f
1.807e+01 1.4e-07 0.0e+00 1.185e-18 p
2.428e+00 1.5e-07 0.0e+00 1.285e-18 p
8.902e-01 -2.9e+02 # -7.1e-17 5.168e-19 f
1.470e+00 1.5e-07 0.0e+00 1.462e-14 p
1.144e+00 1.5e-07 0.0e+00 1.260e-14 p
1.009e+00 1.5e-07 0.0e+00 4.120e-13 p
9.478e-01 -6.8e+02 # -2.4e-17 1.449e-14 f
9.780e-01 -1.6e+03 # -7.3e-17 6.791e-14 f
9.934e-01 -4.2e+03 # -1.2e-16 3.524e-14 f
1.001e+00 -2.0e+04 # -2.3e-17 5.717e-20 f
1.005e+00 1.5e-07 0.0e+00 8.953e-18 p
1.003e+00 -2.2e+05 # -1.8e-17 3.225e-12 f
1.004e+00 1.5e-07 0.0e+00 2.445e-12 p
Limiting gains...
1.004e+00 1.6e-07 0.0e+00 5.811e-18 p
Best performance (actual): 1.004
</pre>
<div class="org-src-container">
<pre class="src src-matlab">P2 = [0 W1 1;
W2 <span class="org-type">-</span>W1 0];
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">[H2b, <span class="org-type">~</span>, gamma, <span class="org-type">~</span>] = hinfsyn(P2, 1, 1,<span class="org-string">'TOLGAM'</span>, 0.001, <span class="org-string">'METHOD'</span>, <span class="org-string">'ric'</span>, <span class="org-string">'DISPLAY'</span>, <span class="org-string">'on'</span>);
</pre>
</div>
<pre class="example" id="org7155dd4">
[H2b, ~, gamma, ~] = hinfsyn(P2, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
Test bounds: 0.3263 &lt;= gamma &lt;= 1000
gamma X&gt;=0 Y&gt;=0 rho(XY)&lt;1 p/f
1.807e+01 0.0e+00 1.4e-07 2.055e-16 p
2.428e+00 0.0e+00 1.4e-07 1.894e-18 p
8.902e-01 -2.1e-16 -2.7e+02 # 1.466e-16 f
1.470e+00 0.0e+00 1.4e-07 4.118e-16 p
1.144e+00 0.0e+00 1.5e-07 2.105e-18 p
1.009e+00 0.0e+00 1.5e-07 2.590e-13 p
9.478e-01 -9.5e-17 -6.3e+02 # 1.663e-19 f
9.780e-01 -1.1e-16 -1.5e+03 # 1.546e-14 f
9.934e-01 -2.8e-17 -4.0e+03 # 3.934e-14 f
1.001e+00 -3.1e-17 -1.9e+04 # 1.191e-19 f
1.005e+00 0.0e+00 1.5e-07 1.443e-12 p
1.003e+00 -8.3e-17 -2.1e+05 # 8.807e-13 f
1.004e+00 0.0e+00 1.5e-07 1.459e-15 p
Limiting gains...
1.004e+00 0.0e+00 1.5e-07 9.086e-19 p
Best performance (actual): 1.004
</pre>
<p>
And indeed, we can see that the exact same filters are obtained (Figure <a href="#org4ff7339">15</a>).
</p>
<div id="org4ff7339" class="figure">
<p><img src="figs/hinf_comp_P1_P2_syn.png" alt="hinf_comp_P1_P2_syn.png" />
</p>
<p><span class="figure-number">Figure 15: </span>Comparison of \(H_2(s)\) when using \(P_1(s)\) or \(P_2(s)\)</p>
</div>
</div>
</div>
<div id="outline-container-orga117463" class="outline-3">
<h3 id="orga117463"><span class="section-number-3">4.2</span> Shaping the Low pass filter or the high pass filter?</h3>
<div class="outline-text-3" id="text-4-2">
<p>
Let&rsquo;s see if there is a difference by explicitly shaping \(H_1(s)\) or \(H_2(s)\).
</p>
<div class="org-src-container">
<pre class="src src-matlab">n = 2; w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>11; G0 = 1<span class="org-type">/</span>10; G1 = 1000; Gc = 1<span class="org-type">/</span>2;
W1 = (((1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n))<span class="org-type">/</span>((1<span class="org-type">/</span>G1)<span class="org-type">^</span>(1<span class="org-type">/</span>n)<span class="org-type">*</span>(1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (1<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n)))<span class="org-type">^</span>n;
n = 3; w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>10; G0 = 1000; G1 = 0.1; Gc = 1<span class="org-type">/</span>2;
W2 = (((1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n))<span class="org-type">/</span>((1<span class="org-type">/</span>G1)<span class="org-type">^</span>(1<span class="org-type">/</span>n)<span class="org-type">*</span>(1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (1<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n)))<span class="org-type">^</span>n;
</pre>
</div>
<p>
Let&rsquo;s first synthesize \(H_1(s)\):
</p>
<div class="org-src-container">
<pre class="src src-matlab">P1 = [W2 <span class="org-type">-</span>W2;
0 W1;
1 0];
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">[H1, <span class="org-type">~</span>, gamma, <span class="org-type">~</span>] = hinfsyn(P1, 1, 1,<span class="org-string">'TOLGAM'</span>, 0.001, <span class="org-string">'METHOD'</span>, <span class="org-string">'ric'</span>, <span class="org-string">'DISPLAY'</span>, <span class="org-string">'on'</span>);
</pre>
</div>
<pre class="example" id="org45692a7">
[H1, ~, gamma, ~] = hinfsyn(P1, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
Test bounds: 0.3263 &lt;= gamma &lt;= 1.712
gamma X&gt;=0 Y&gt;=0 rho(XY)&lt;1 p/f
7.476e-01 -2.5e+01 # -8.3e-18 4.938e-20 f
1.131e+00 1.9e-07 0.0e+00 1.566e-16 p
9.197e-01 -1.4e+02 # -7.9e-17 4.241e-17 f
1.020e+00 1.9e-07 0.0e+00 2.095e-16 p
9.686e-01 -3.8e+02 # -7.0e-17 1.463e-23 f
9.940e-01 -1.5e+03 # -1.3e-17 3.168e-19 f
1.007e+00 1.9e-07 0.0e+00 1.696e-15 p
1.000e+00 -4.8e+03 # -7.1e-18 7.203e-20 f
1.004e+00 1.9e-07 0.0e+00 1.491e-14 p
1.002e+00 -1.1e+04 # -2.6e-16 2.579e-14 f
1.003e+00 -2.8e+04 # -6.0e-18 8.558e-20 f
Limiting gains...
1.004e+00 2.0e-07 0.0e+00 5.647e-18 p
1.004e+00 1.0e-06 0.0e+00 5.648e-18 p
Best performance (actual): 1.004
</pre>
<p>
And now \(H_2(s)\):
</p>
<div class="org-src-container">
<pre class="src src-matlab">P2 = [W1 <span class="org-type">-</span>W1;
0 W2;
1 0];
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">[H2, <span class="org-type">~</span>, gamma, <span class="org-type">~</span>] = hinfsyn(P2, 1, 1,<span class="org-string">'TOLGAM'</span>, 0.001, <span class="org-string">'METHOD'</span>, <span class="org-string">'ric'</span>, <span class="org-string">'DISPLAY'</span>, <span class="org-string">'on'</span>);
</pre>
</div>
<pre class="example" id="org6543cab">
[H2b, ~, gamma, ~] = hinfsyn(P2, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
Test bounds: 0.3263 &lt;= gamma &lt;= 1000
gamma X&gt;=0 Y&gt;=0 rho(XY)&lt;1 p/f
1.807e+01 1.4e-07 0.0e+00 1.185e-18 p
2.428e+00 1.5e-07 0.0e+00 1.285e-18 p
8.902e-01 -2.9e+02 # -7.1e-17 5.168e-19 f
1.470e+00 1.5e-07 0.0e+00 1.462e-14 p
1.144e+00 1.5e-07 0.0e+00 1.260e-14 p
1.009e+00 1.5e-07 0.0e+00 4.120e-13 p
9.478e-01 -6.8e+02 # -2.4e-17 1.449e-14 f
9.780e-01 -1.6e+03 # -7.3e-17 6.791e-14 f
9.934e-01 -4.2e+03 # -1.2e-16 3.524e-14 f
1.001e+00 -2.0e+04 # -2.3e-17 5.717e-20 f
1.005e+00 1.5e-07 0.0e+00 8.953e-18 p
1.003e+00 -2.2e+05 # -1.8e-17 3.225e-12 f
1.004e+00 1.5e-07 0.0e+00 2.445e-12 p
Limiting gains...
1.004e+00 1.6e-07 0.0e+00 5.811e-18 p
Best performance (actual): 1.004
</pre>
<p>
And compare \(H_1(s)\) with \(1 - H_2(s)\) and \(H_2(s)\) with \(1 - H_1(s)\) in Figure <a href="#org4a9724c">16</a>.
</p>
<div id="org4a9724c" class="figure">
<p><img src="figs/hinf_comp_H1_H2_syn.png" alt="hinf_comp_H1_H2_syn.png" />
</p>
<p><span class="figure-number">Figure 16: </span>Comparison of \(H_1(s)\) with \(1-H_2(s)\), and \(H_2(s)\) with \(1-H_1(s)\)</p>
</div>
</div>
</div>
</div>
<div id="outline-container-orgf082879" class="outline-2">
<h2 id="orgf082879"><span class="section-number-2">5</span> Impose a positive slope at DC or a negative slope at infinite frequency</h2>
<div class="outline-text-2" id="text-5">
</div>
<div id="outline-container-org96df1d1" class="outline-3">
<h3 id="org96df1d1"><span class="section-number-3">5.1</span> Manually shift zeros to the origin after synthesis</h3>
<div class="outline-text-3" id="text-5-1">
<p>
Suppose we want \(H_2(s)\) to be an high pass filter with a slope of +2 at low frequency (from 0Hz).
</p>
<p>
We cannot impose that using the weight \(W_2(s)\) as it would be improper.
</p>
<p>
However, we may manually shift 2 of the low frequency zeros to the origin.
</p>
<div class="org-src-container">
<pre class="src src-matlab">n = 2; w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>11; G0 = 1<span class="org-type">/</span>10; G1 = 1000; Gc = 1<span class="org-type">/</span>2;
W1 = (((1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n))<span class="org-type">/</span>((1<span class="org-type">/</span>G1)<span class="org-type">^</span>(1<span class="org-type">/</span>n)<span class="org-type">*</span>(1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (1<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n)))<span class="org-type">^</span>n;
n = 3; w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>10; G0 = 1e4; G1 = 0.1; Gc = 1<span class="org-type">/</span>2;
W2 = (((1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n))<span class="org-type">/</span>((1<span class="org-type">/</span>G1)<span class="org-type">^</span>(1<span class="org-type">/</span>n)<span class="org-type">*</span>(1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (1<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n)))<span class="org-type">^</span>n;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">P = [W1 <span class="org-type">-</span>W1;
0 W2;
1 0];
</pre>
</div>
<p>
And we do the \(\mathcal{H}_\infty\) synthesis using the <code>hinfsyn</code> command:
</p>
<div class="org-src-container">
<pre class="src src-matlab">[H2, <span class="org-type">~</span>, gamma, <span class="org-type">~</span>] = hinfsyn(P, 1, 1,<span class="org-string">'TOLGAM'</span>, 0.001, <span class="org-string">'METHOD'</span>, <span class="org-string">'lmi'</span>, <span class="org-string">'DISPLAY'</span>, <span class="org-string">'on'</span>);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">[z,p,k] = zpkdata(H2)
</pre>
</div>
<p>
Looking at the zeros, we see two low frequency complex conjugate zeros.
</p>
<pre class="example" id="orge6a4f22">
z{1}
ans =
-4690930.24283199 + 0i
-163.420524657426 + 0i
-0.853192261081498 + 0.713416012479897i
-0.853192261081498 - 0.713416012479897i
-3.15812268762265 + 0i
</pre>
<p>
We manually put these zeros at the origin:
</p>
<div class="org-src-container">
<pre class="src src-matlab">z{1}([3,4]) = 0;
</pre>
</div>
<p>
And we create a modified filter \(H_{2z}(s)\):
</p>
<div class="org-src-container">
<pre class="src src-matlab">H2z = zpk(z,p,k);
</pre>
</div>
<p>
And as usual, \(H_{1z}(s)\) is defined as the complementary of \(H_{2z}(s)\):
</p>
<div class="org-src-container">
<pre class="src src-matlab">H1z = 1 <span class="org-type">-</span> H2z;
</pre>
</div>
<p>
The bode plots of \(H_1(s)\), \(H_2(s)\), \(H_{1z}(s)\) and \(H_{2z}(s)\) are shown in Figure <a href="#org4631977">17</a>.
And we see that \(H_{1z}(s)\) is slightly modified when setting the zeros at the origin for \(H_{2z}(s)\).
</p>
<div id="org4631977" class="figure">
<p><img src="figs/comp_filters_shift_zero.png" alt="comp_filters_shift_zero.png" />
</p>
<p><span class="figure-number">Figure 17: </span>Bode plots of \(H_1(s)\), \(H_2(s)\), \(H_{1z}(s)\) and \(H_{2z}(s)\)</p>
</div>
</div>
</div>
<div id="outline-container-org6b92ce0" class="outline-3">
<h3 id="org6b92ce0"><span class="section-number-3">5.2</span> Imposing a positive slope at DC during the synthesis phase</h3>
<div class="outline-text-3" id="text-5-2">
<p>
Suppose we want to synthesize \(H_2(s)\) such that it has a slope of +2 from DC.
We can include this &ldquo;feature&rdquo; in the generalized plant as shown in Figure <a href="#org00fe83c">18</a>.
</p>
<div id="org00fe83c" class="figure">
<p><img src="figs/h_infinity_arch_H2_feature.png" alt="h_infinity_arch_H2_feature.png" />
</p>
<p><span class="figure-number">Figure 18: </span>Generalized plant with included wanted feature represented by \(H_{2w}(s)\)</p>
</div>
<p>
After synthesis, the obtained filter will be:
</p>
\begin{equation}
H_2(s) = H_2^\prime(s) H_{2w}(s)
\end{equation}
<p>
and therefore the &ldquo;feature&rdquo; will be included in the filter.
</p>
<p>
For \(H_1(s)\) nothing is changed: \(H_1(s) = 1 - H_2(s)\).
</p>
<p>
The weighting functions are defined as usual:
</p>
<div class="org-src-container">
<pre class="src src-matlab">n = 2; w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>11; G0 = 1<span class="org-type">/</span>10; G1 = 1000; Gc = 1<span class="org-type">/</span>2;
W1 = (((1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n))<span class="org-type">/</span>((1<span class="org-type">/</span>G1)<span class="org-type">^</span>(1<span class="org-type">/</span>n)<span class="org-type">*</span>(1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (1<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n)))<span class="org-type">^</span>n;
n = 3; w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>10; G0 = 1e4; G1 = 0.1; Gc = 1<span class="org-type">/</span>2;
W2 = (((1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n))<span class="org-type">/</span>((1<span class="org-type">/</span>G1)<span class="org-type">^</span>(1<span class="org-type">/</span>n)<span class="org-type">*</span>(1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (1<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n)))<span class="org-type">^</span>n;
</pre>
</div>
<p>
The wanted feature here is a +2 slope at low frequency.
For that, we use an high pass filter with a slope of +2 at low frequency.
</p>
<div class="org-src-container">
<pre class="src src-matlab">w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>50;
H2w = (s<span class="org-type">/</span>w0<span class="org-type">/</span>(s<span class="org-type">/</span>w0<span class="org-type">+</span>1))<span class="org-type">^</span>2;
</pre>
</div>
<p>
We define the generalized plant as shown in Figure <a href="#org00fe83c">18</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">P = [W1 <span class="org-type">-</span>W1;
0 W2;
H2w 0];
</pre>
</div>
<p>
And we do the \(\mathcal{H}_\infty\) synthesis using the <code>hinfsyn</code> command.
</p>
<div class="org-src-container">
<pre class="src src-matlab">[H2p, <span class="org-type">~</span>, gamma, <span class="org-type">~</span>] = hinfsyn(P, 1, 1,<span class="org-string">'TOLGAM'</span>, 0.001, <span class="org-string">'METHOD'</span>, <span class="org-string">'lmi'</span>, <span class="org-string">'DISPLAY'</span>, <span class="org-string">'on'</span>);
</pre>
</div>
<p>
Finally, we define \(H_2(s)\) as the product of the synthesized filter and the wanted &ldquo;feature&rdquo;:
</p>
<div class="org-src-container">
<pre class="src src-matlab">H2 = H2p<span class="org-type">*</span>H2w;
</pre>
</div>
<p>
And we define \(H_1(s)\) to be the complementary of \(H_2(s)\):
</p>
<div class="org-src-container">
<pre class="src src-matlab">H1 = 1 <span class="org-type">-</span> H2;
</pre>
</div>
<p>
The obtained complementary filters are shown in Figure <a href="#org551ae15">19</a>.
</p>
<div id="org551ae15" class="figure">
<p><img src="figs/comp_filters_H2_feature.png" alt="comp_filters_H2_feature.png" />
</p>
<p><span class="figure-number">Figure 19: </span>Obtained complementary fitlers</p>
</div>
</div>
</div>
<div id="outline-container-org71e3235" class="outline-3">
<h3 id="org71e3235"><span class="section-number-3">5.3</span> Imposing a negative slope at infinity frequency during the synthesis phase</h3>
<div class="outline-text-3" id="text-5-3">
<p>
Let&rsquo;s suppose we now want to shape a low pass filter that as a negative slope until infinite frequency.
</p>
<p>
The used technique is the same as in the previous section, and the generalized plant is shown in Figure <a href="#org00fe83c">18</a>.
</p>
<p>
The weights are defined as usual.
</p>
<div class="org-src-container">
<pre class="src src-matlab">n = 3; w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>10; G0 = 1000; G1 = 0.1; Gc = 1<span class="org-type">/</span>2;
W1 = (((1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n))<span class="org-type">/</span>((1<span class="org-type">/</span>G1)<span class="org-type">^</span>(1<span class="org-type">/</span>n)<span class="org-type">*</span>(1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (1<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n)))<span class="org-type">^</span>n;
n = 2; w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>11; G0 = 1<span class="org-type">/</span>10; G1 = 1000; Gc = 1<span class="org-type">/</span>2;
W2 = (((1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n))<span class="org-type">/</span>((1<span class="org-type">/</span>G1)<span class="org-type">^</span>(1<span class="org-type">/</span>n)<span class="org-type">*</span>(1<span class="org-type">/</span>w0)<span class="org-type">*</span>sqrt((1<span class="org-type">-</span>(G0<span class="org-type">/</span>Gc)<span class="org-type">^</span>(2<span class="org-type">/</span>n))<span class="org-type">/</span>(1<span class="org-type">-</span>(Gc<span class="org-type">/</span>G1)<span class="org-type">^</span>(2<span class="org-type">/</span>n)))<span class="org-type">*</span>s <span class="org-type">+</span> (1<span class="org-type">/</span>Gc)<span class="org-type">^</span>(1<span class="org-type">/</span>n)))<span class="org-type">^</span>n;
</pre>
</div>
<p>
This time, the feature is a low pass filter with a slope of -2 at high frequency.
</p>
<div class="org-src-container">
<pre class="src src-matlab">H2w = 1<span class="org-type">/</span>(s<span class="org-type">/</span>(2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>10) <span class="org-type">+</span> 1)<span class="org-type">^</span>2;
</pre>
</div>
<p>
The generalized plant is defined:
</p>
<div class="org-src-container">
<pre class="src src-matlab">P = [W1 <span class="org-type">-</span>W1;
0 W2;
H2w 0];
</pre>
</div>
<p>
And we do the \(\mathcal{H}_\infty\) synthesis using the <code>hinfsyn</code> command.
</p>
<div class="org-src-container">
<pre class="src src-matlab">[H2p, <span class="org-type">~</span>, gamma, <span class="org-type">~</span>] = hinfsyn(P, 1, 1,<span class="org-string">'TOLGAM'</span>, 0.001, <span class="org-string">'METHOD'</span>, <span class="org-string">'lmi'</span>, <span class="org-string">'DISPLAY'</span>, <span class="org-string">'on'</span>);
</pre>
</div>
<p>
The feature is added to the synthesized filter:
</p>
<div class="org-src-container">
<pre class="src src-matlab">H2 = H2p<span class="org-type">*</span>H2w;
</pre>
</div>
<p>
And \(H_1(s)\) is defined as follows:
</p>
<div class="org-src-container">
<pre class="src src-matlab">H1 = 1 <span class="org-type">-</span> H2;
</pre>
</div>
<p>
The obtained complementary filters are shown in Figure <a href="#org7f33e5d">20</a>.
</p>
<div id="org7f33e5d" class="figure">
<p><img src="figs/comp_filters_H2_feature_neg_slope.png" alt="comp_filters_H2_feature_neg_slope.png" />
</p>
<p><span class="figure-number">Figure 20: </span>Obtained complementary fitlers</p>
</div>
</div>
</div>
</div>
<p>
</p>
@ -792,7 +1321,7 @@ Let&rsquo;s now compare the FIR filters designed in (<a href="#citeproc_bib_item
</div>
<div id="postamble" class="status">
<p class="author">Author: Thomas Dehaeze</p>
<p class="date">Created: 2020-11-12 jeu. 10:44</p>
<p class="date">Created: 2020-12-11 ven. 14:05</p>
</div>
</body>
</html>

View File

@ -6,8 +6,8 @@
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+LATEX_CLASS: cleanreport
#+LATEX_CLASS_OPTIONS: [tocnp, secbreak, minted]
#+LaTeX_CLASS: scrreprt
#+LaTeX_HEADER_EXTRA: \input{/home/thomas/Cloud/org-theme/preamble.tex}
#+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :tangle matlab/comp_filters_design.m
@ -18,6 +18,19 @@
#+PROPERTY: header-args:matlab+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}")
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
#+PROPERTY: header-args:latex+ :results file raw replace
#+PROPERTY: header-args:latex+ :buffer no
#+PROPERTY: header-args:latex+ :tangle no
#+PROPERTY: header-args:latex+ :eval no-export
#+PROPERTY: header-args:latex+ :exports results
#+PROPERTY: header-args:latex+ :mkdirp yes
#+PROPERTY: header-args:latex+ :output-dir figs
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
:END:
* Introduction :ignore:
@ -104,9 +117,45 @@ The parameters permits to specify:
The general shape of a weighting function generated using the formula is shown in figure [[fig:weight_formula]].
#+begin_src matlab :exports none
n = 3; w0 = 2*pi*10; G0 = 1e-3; G1 = 1e1; Gc = 2;
W = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
figure;
hold on;
plot(freqs, abs(squeeze(freqresp(W, freqs, 'Hz'))), 'k-');
plot([1e-3 1e0], [G0 G0], 'k--', 'LineWidth', 1)
text(1e0, G0, '$\quad G_0$')
plot([1e1 1e3], [G1 G1], 'k--', 'LineWidth', 1)
text(1e1,G1,'$G_{\infty}\quad$','HorizontalAlignment', 'right')
plot([w0/2/pi w0/2/pi], [1 2*Gc], 'k--', 'LineWidth', 1)
text(w0/2/pi,1,'$\omega_c$','VerticalAlignment', 'top', 'HorizontalAlignment', 'center')
plot([w0/2/pi/2 2*w0/2/pi], [Gc Gc], 'k--', 'LineWidth', 1)
text(w0/2/pi/2, Gc, '$G_c \quad$','HorizontalAlignment', 'right')
text(w0/5/pi/2, abs(evalfr(W, j*w0/5)), 'Slope: $n \quad$', 'HorizontalAlignment', 'right')
text(w0/2/pi, abs(evalfr(W, j*w0)), '$\bullet$', 'HorizontalAlignment', 'center')
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
hold off;
xlim([freqs(1), freqs(end)]);
ylim([5e-4, 20]);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/weight_formula.pdf', 'width', 'wide', 'height', 'normal');
#+end_src
#+name: fig:weight_formula
#+caption: Amplitude of the proposed formula for the weighting functions
[[file:figs-tikz/weight_formula.png]]
#+caption: Gain of the Weighting Function formula
#+RESULTS:
[[file:figs/weight_formula.png]]
#+begin_src matlab
n = 2; w0 = 2*pi*11; G0 = 1/10; G1 = 1000; Gc = 1/2;
@ -922,6 +971,664 @@ Let's now compare the FIR filters designed in cite:hua05_low_ligo and the one ob
#+RESULTS:
[[file:figs/comp_fir_ligo_hinf.png]]
* Alternative Synthesis
** Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
<<matlab-dir>>
#+end_src
#+begin_src matlab :exports none :results silent :noweb yes
<<matlab-init>>
#+end_src
** Two generalized plants
In order to synthesize the complementary filter using the proposed method, we can use two alternative generalized plant as shown in Figures [[fig:h_infinity_arch_1]] and [[fig:h_infinity_arch_2]].
\begin{equation}
P_1 = \begin{bmatrix} W_1 & -W_1 \\ 0 & W_2 \\ 1 & 0 \end{bmatrix}
\end{equation}
#+begin_src latex :file h_infinity_arch_1.pdf
\begin{tikzpicture}
\node[block={4.5cm}{3.0cm}, fill=black!20!white, dashed] (P) {};
\node[above] at (P.north) {$P_1(s)$};
\coordinate[] (inputw) at ($(P.south west)!0.75!(P.north west) + (-0.7, 0)$);
\coordinate[] (inputu) at ($(P.south west)!0.35!(P.north west) + (-0.7, 0)$);
\coordinate[] (output1) at ($(P.south east)!0.75!(P.north east) + ( 0.7, 0)$);
\coordinate[] (output2) at ($(P.south east)!0.35!(P.north east) + ( 0.7, 0)$);
\coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + ( 0.7, 0)$);
\node[block, left=1.4 of output1] (W1){$W_1(s)$};
\node[block, left=1.4 of output2] (W2){$W_2(s)$};
\node[addb={+}{}{}{}{-}, left=of W1] (sub) {};
\node[block, below=0.3 of P] (H2) {$H_2(s)$};
\draw[->] (inputw) node[above right]{$w$} -- (sub.west);
\draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (W2.west);
\draw[->] (inputu-|sub) node[branch]{} -- (sub.south);
\draw[->] (sub.east) -- (W1.west);
\draw[->] ($(sub.west)+(-0.6, 0)$) node[branch]{} |- ($(outputv)+(-0.35, 0)$) node[above]{$v$} |- (H2.east);
\draw[->] (W1.east) -- (output1)node[above left]{$z_1$};
\draw[->] (W2.east) -- (output2)node[above left]{$z_2$};
\end{tikzpicture}
#+end_src
#+name: fig:h_infinity_arch_1
#+caption: Complementary Filter Synthesis - Conf 1
#+RESULTS:
[[file:figs/h_infinity_arch_1.png]]
\begin{equation}
P_2 = \begin{bmatrix} 0 & W_1 & 1 \\ W_2 & -W_1 & 0 \end{bmatrix}
\end{equation}
#+begin_src latex :file h_infinity_arch_2.pdf
\begin{tikzpicture}
\node[block={4.5cm}{4.5cm}, fill=black!20!white, dashed] (P) {};
\node[above] at (P.north) {$P_2(s)$};
\coordinate[] (input2) at ($(P.south west)!0.85!(P.north west) + (-0.7, 0)$);
\coordinate[] (input1) at ($(P.south west)!0.55!(P.north west) + (-0.7, 0)$);
\coordinate[] (inputu) at ($(P.south west)!0.3!( P.north west) + (-0.7, 0)$);
\coordinate[] (outputz) at ($(P.south east)!0.3!(P.north east) + (0.7, 0)$);
\coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + (0.7, 0)$);
\node[block, right=1.4 of input2] (W2){$W_2(s)$};
\node[block, right=1.4 of input1] (W1){$W_1(s)$};
\node[addb={+}{-}{}{}{}, right=of W1] (sub) {};
\node[addb, left=2.5 of outputz] (add) {};
\node[block, below=0.3 of P] (H2) {$H_2(s)$};
\draw[->] (input2) node[above right]{$w_2$} -- (W2.west);
\draw[->] (input1) node[above right]{$w_1$} -- (W1.west);
\draw[->] (W2.east) -| (sub.north);
\draw[->] (W1.east) -- (sub.west);
\draw[->] (W1-|add)node[branch]{} -- (add.north);
\draw[->] (sub.south) |- (outputv) node[above left]{$v$} |- (H2.east);
\draw[->] (H2.west) -| (inputu) node[above right]{$u$} -- (add.west);
\draw[->] (add.east) -- (outputz) node[above left]{$z$};
\end{tikzpicture}
#+end_src
#+name: fig:h_infinity_arch_2
#+caption: Complementary Filter Synthesis - Conf 2
#+RESULTS:
[[file:figs/h_infinity_arch_2.png]]
Let's run the $\mathcal{H}_\infty$ synthesis for both generalized plant using the same weights and see if the obtained filters are the same:
#+begin_src matlab
n = 2; w0 = 2*pi*11; G0 = 1/10; G1 = 1000; Gc = 1/2;
W1 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
n = 3; w0 = 2*pi*10; G0 = 1000; G1 = 0.1; Gc = 1/2;
W2 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
#+end_src
#+begin_src matlab
P1 = [W1 -W1;
0 W2;
1 0];
#+end_src
#+begin_src matlab :results output replace :exports both
[H2, ~, gamma, ~] = hinfsyn(P1, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
#+end_src
#+RESULTS:
#+begin_example
[H2, ~, gamma, ~] = hinfsyn(P1, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
Test bounds: 0.3263 <= gamma <= 1000
gamma X>=0 Y>=0 rho(XY)<1 p/f
1.807e+01 1.4e-07 0.0e+00 1.185e-18 p
2.428e+00 1.5e-07 0.0e+00 1.285e-18 p
8.902e-01 -2.9e+02 # -7.1e-17 5.168e-19 f
1.470e+00 1.5e-07 0.0e+00 1.462e-14 p
1.144e+00 1.5e-07 0.0e+00 1.260e-14 p
1.009e+00 1.5e-07 0.0e+00 4.120e-13 p
9.478e-01 -6.8e+02 # -2.4e-17 1.449e-14 f
9.780e-01 -1.6e+03 # -7.3e-17 6.791e-14 f
9.934e-01 -4.2e+03 # -1.2e-16 3.524e-14 f
1.001e+00 -2.0e+04 # -2.3e-17 5.717e-20 f
1.005e+00 1.5e-07 0.0e+00 8.953e-18 p
1.003e+00 -2.2e+05 # -1.8e-17 3.225e-12 f
1.004e+00 1.5e-07 0.0e+00 2.445e-12 p
Limiting gains...
1.004e+00 1.6e-07 0.0e+00 5.811e-18 p
Best performance (actual): 1.004
#+end_example
#+begin_src matlab
P2 = [0 W1 1;
W2 -W1 0];
#+end_src
#+begin_src matlab :results output replace :exports both
[H2b, ~, gamma, ~] = hinfsyn(P2, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
#+end_src
#+RESULTS:
#+begin_example
[H2b, ~, gamma, ~] = hinfsyn(P2, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
Test bounds: 0.3263 <= gamma <= 1000
gamma X>=0 Y>=0 rho(XY)<1 p/f
1.807e+01 0.0e+00 1.4e-07 2.055e-16 p
2.428e+00 0.0e+00 1.4e-07 1.894e-18 p
8.902e-01 -2.1e-16 -2.7e+02 # 1.466e-16 f
1.470e+00 0.0e+00 1.4e-07 4.118e-16 p
1.144e+00 0.0e+00 1.5e-07 2.105e-18 p
1.009e+00 0.0e+00 1.5e-07 2.590e-13 p
9.478e-01 -9.5e-17 -6.3e+02 # 1.663e-19 f
9.780e-01 -1.1e-16 -1.5e+03 # 1.546e-14 f
9.934e-01 -2.8e-17 -4.0e+03 # 3.934e-14 f
1.001e+00 -3.1e-17 -1.9e+04 # 1.191e-19 f
1.005e+00 0.0e+00 1.5e-07 1.443e-12 p
1.003e+00 -8.3e-17 -2.1e+05 # 8.807e-13 f
1.004e+00 0.0e+00 1.5e-07 1.459e-15 p
Limiting gains...
1.004e+00 0.0e+00 1.5e-07 9.086e-19 p
Best performance (actual): 1.004
#+end_example
And indeed, we can see that the exact same filters are obtained (Figure [[fig:hinf_comp_P1_P2_syn]]).
#+begin_src matlab :exports none
freqs = logspace(-2, 4, 1000);
figure;
hold on;
plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), '-', 'DisplayName', '$H_2$');
plot(freqs, abs(squeeze(freqresp(H2b, freqs, 'Hz'))), '--', 'DisplayName', '$H_{2b}$');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
legend('location', 'southeast', 'FontSize', 8);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/hinf_comp_P1_P2_syn.pdf', 'width', 'wide', 'height', 'normal');
#+end_src
#+name: fig:hinf_comp_P1_P2_syn
#+caption: Comparison of $H_2(s)$ when using $P_1(s)$ or $P_2(s)$
#+RESULTS:
[[file:figs/hinf_comp_P1_P2_syn.png]]
** Shaping the Low pass filter or the high pass filter?
Let's see if there is a difference by explicitly shaping $H_1(s)$ or $H_2(s)$.
#+begin_src matlab
n = 2; w0 = 2*pi*11; G0 = 1/10; G1 = 1000; Gc = 1/2;
W1 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
n = 3; w0 = 2*pi*10; G0 = 1000; G1 = 0.1; Gc = 1/2;
W2 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
#+end_src
Let's first synthesize $H_1(s)$:
#+begin_src matlab
P1 = [W2 -W2;
0 W1;
1 0];
#+end_src
#+begin_src matlab :results output replace :exports both
[H1, ~, gamma, ~] = hinfsyn(P1, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
#+end_src
#+RESULTS:
#+begin_example
[H1, ~, gamma, ~] = hinfsyn(P1, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
Test bounds: 0.3263 <= gamma <= 1.712
gamma X>=0 Y>=0 rho(XY)<1 p/f
7.476e-01 -2.5e+01 # -8.3e-18 4.938e-20 f
1.131e+00 1.9e-07 0.0e+00 1.566e-16 p
9.197e-01 -1.4e+02 # -7.9e-17 4.241e-17 f
1.020e+00 1.9e-07 0.0e+00 2.095e-16 p
9.686e-01 -3.8e+02 # -7.0e-17 1.463e-23 f
9.940e-01 -1.5e+03 # -1.3e-17 3.168e-19 f
1.007e+00 1.9e-07 0.0e+00 1.696e-15 p
1.000e+00 -4.8e+03 # -7.1e-18 7.203e-20 f
1.004e+00 1.9e-07 0.0e+00 1.491e-14 p
1.002e+00 -1.1e+04 # -2.6e-16 2.579e-14 f
1.003e+00 -2.8e+04 # -6.0e-18 8.558e-20 f
Limiting gains...
1.004e+00 2.0e-07 0.0e+00 5.647e-18 p
1.004e+00 1.0e-06 0.0e+00 5.648e-18 p
Best performance (actual): 1.004
#+end_example
And now $H_2(s)$:
#+begin_src matlab
P2 = [W1 -W1;
0 W2;
1 0];
#+end_src
#+begin_src matlab :results output replace :exports both
[H2, ~, gamma, ~] = hinfsyn(P2, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
#+end_src
#+RESULTS:
#+begin_example
[H2b, ~, gamma, ~] = hinfsyn(P2, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
Test bounds: 0.3263 <= gamma <= 1000
gamma X>=0 Y>=0 rho(XY)<1 p/f
1.807e+01 1.4e-07 0.0e+00 1.185e-18 p
2.428e+00 1.5e-07 0.0e+00 1.285e-18 p
8.902e-01 -2.9e+02 # -7.1e-17 5.168e-19 f
1.470e+00 1.5e-07 0.0e+00 1.462e-14 p
1.144e+00 1.5e-07 0.0e+00 1.260e-14 p
1.009e+00 1.5e-07 0.0e+00 4.120e-13 p
9.478e-01 -6.8e+02 # -2.4e-17 1.449e-14 f
9.780e-01 -1.6e+03 # -7.3e-17 6.791e-14 f
9.934e-01 -4.2e+03 # -1.2e-16 3.524e-14 f
1.001e+00 -2.0e+04 # -2.3e-17 5.717e-20 f
1.005e+00 1.5e-07 0.0e+00 8.953e-18 p
1.003e+00 -2.2e+05 # -1.8e-17 3.225e-12 f
1.004e+00 1.5e-07 0.0e+00 2.445e-12 p
Limiting gains...
1.004e+00 1.6e-07 0.0e+00 5.811e-18 p
Best performance (actual): 1.004
#+end_example
And compare $H_1(s)$ with $1 - H_2(s)$ and $H_2(s)$ with $1 - H_1(s)$ in Figure [[fig:hinf_comp_H1_H2_syn]].
#+begin_src matlab :exports none
freqs = logspace(-2, 4, 1000);
figure;
hold on;
plot(freqs, abs(squeeze(freqresp(H1, freqs, 'Hz'))), '-', 'DisplayName', '$H_1$');
plot(freqs, abs(squeeze(freqresp(1-H1, freqs, 'Hz'))), '-', 'DisplayName', '$H_2$');
plot(freqs, abs(squeeze(freqresp(1-H2, freqs, 'Hz'))), '--', 'DisplayName', '$H_2$');
plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), '--', 'DisplayName', '$H_1$');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
xlabel('Frequency [Hz]'); ylabel('Magnitude');
legend('location', 'northeast', 'FontSize', 8, 'NumColumns', 2);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/hinf_comp_H1_H2_syn.pdf', 'width', 'wide', 'height', 'normal');
#+end_src
#+name: fig:hinf_comp_H1_H2_syn
#+caption: Comparison of $H_1(s)$ with $1-H_2(s)$, and $H_2(s)$ with $1-H_1(s)$
#+RESULTS:
[[file:figs/hinf_comp_H1_H2_syn.png]]
* Impose a positive slope at DC or a negative slope at infinite frequency
** Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
<<matlab-dir>>
#+end_src
#+begin_src matlab :exports none :results silent :noweb yes
<<matlab-init>>
#+end_src
** Manually shift zeros to the origin after synthesis
Suppose we want $H_2(s)$ to be an high pass filter with a slope of +2 at low frequency (from 0Hz).
We cannot impose that using the weight $W_2(s)$ as it would be improper.
However, we may manually shift 2 of the low frequency zeros to the origin.
#+begin_src matlab
n = 2; w0 = 2*pi*11; G0 = 1/10; G1 = 1000; Gc = 1/2;
W1 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
n = 3; w0 = 2*pi*10; G0 = 1e4; G1 = 0.1; Gc = 1/2;
W2 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
#+end_src
#+begin_src matlab
P = [W1 -W1;
0 W2;
1 0];
#+end_src
And we do the $\mathcal{H}_\infty$ synthesis using the =hinfsyn= command:
#+begin_src matlab
[H2, ~, gamma, ~] = hinfsyn(P, 1, 1,'TOLGAM', 0.001, 'METHOD', 'lmi', 'DISPLAY', 'on');
#+end_src
#+begin_src matlab
[z,p,k] = zpkdata(H2)
#+end_src
Looking at the zeros, we see two low frequency complex conjugate zeros.
#+begin_src matlab :results output replace :exports results
z{1}
#+end_src
#+RESULTS:
#+begin_example
z{1}
ans =
-4690930.24283199 + 0i
-163.420524657426 + 0i
-0.853192261081498 + 0.713416012479897i
-0.853192261081498 - 0.713416012479897i
-3.15812268762265 + 0i
#+end_example
We manually put these zeros at the origin:
#+begin_src matlab
z{1}([3,4]) = 0;
#+end_src
And we create a modified filter $H_{2z}(s)$:
#+begin_src matlab
H2z = zpk(z,p,k);
#+end_src
And as usual, $H_{1z}(s)$ is defined as the complementary of $H_{2z}(s)$:
#+begin_src matlab
H1z = 1 - H2z;
#+end_src
The bode plots of $H_1(s)$, $H_2(s)$, $H_{1z}(s)$ and $H_{2z}(s)$ are shown in Figure [[fig:comp_filters_shift_zero]].
And we see that $H_{1z}(s)$ is slightly modified when setting the zeros at the origin for $H_{2z}(s)$.
#+begin_src matlab :exports none
freqs = logspace(-2, 4, 1000);
figure;
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
% Magnitude
ax1 = nexttile([2, 1]);
hold on;
set(gca,'ColorOrderIndex',1)
plot(freqs, abs(squeeze(freqresp(1-H2, freqs, 'Hz'))), '-', 'DisplayName', '$H_1$');
plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), '-', 'DisplayName', '$H_2$');
set(gca,'ColorOrderIndex',1)
plot(freqs, abs(squeeze(freqresp(1-H2z, freqs, 'Hz'))), '--', 'DisplayName', '$H_{1z}$');
plot(freqs, abs(squeeze(freqresp(H2z, freqs, 'Hz'))), '--', 'DisplayName', '$H_{2z}$');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude');
set(gca, 'XTickLabel',[]);
legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
% Phase
ax2 = nexttile;
hold on;
set(gca,'ColorOrderIndex',1)
plot(freqs, 180/pi*phase(squeeze(freqresp(1-H2, freqs, 'Hz'))), '-');
plot(freqs, 180/pi*phase(squeeze(freqresp(H2, freqs, 'Hz'))), '-');
set(gca,'ColorOrderIndex',1)
plot(freqs, 180/pi*phase(squeeze(freqresp(H1z, freqs, 'Hz'))), '--');
plot(freqs, 360+180/pi*phase(squeeze(freqresp(H2z, freqs, 'Hz'))), '--');
hold off;
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
set(gca, 'XScale', 'log');
yticks([-180:90:180]);
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/comp_filters_shift_zero.pdf', 'width', 'wide', 'height', 'tall');
#+end_src
#+name: fig:comp_filters_shift_zero
#+caption: Bode plots of $H_1(s)$, $H_2(s)$, $H_{1z}(s)$ and $H_{2z}(s)$
#+RESULTS:
[[file:figs/comp_filters_shift_zero.png]]
** Imposing a positive slope at DC during the synthesis phase
Suppose we want to synthesize $H_2(s)$ such that it has a slope of +2 from DC.
We can include this "feature" in the generalized plant as shown in Figure [[fig:h_infinity_arch_H2_feature]].
#+begin_src latex :file h_infinity_arch_H2_feature.pdf
\begin{tikzpicture}
\node[block={4.5cm}{4.0cm}, fill=black!20!white, dashed] (P) {};
\node[above] at (P.north) {$P(s)$};
\coordinate[] (inputw) at ($(P.south west)!0.8!(P.north west) + (-0.7, 0)$);
\coordinate[] (inputu) at ($(P.south west)!0.5!(P.north west) + (-0.7, 0)$);
\coordinate[] (output1) at ($(P.south east)!0.8!(P.north east) + ( 0.7, 0)$);
\coordinate[] (output2) at ($(P.south east)!0.5!(P.north east) + ( 0.7, 0)$);
\coordinate[] (outputv) at ($(P.south east)!0.2!(P.north east) + ( 0.7, 0)$);
\node[block, left=1.4 of output1] (W1){$W_1(s)$};
\node[block, left=1.4 of output2] (W2){$W_2(s)$};
\node[block, left=1.4 of outputv] (Hw){$H_{2w}(s)$};
\node[addb={+}{}{}{}{-}, left=of W1] (sub) {};
\node[block, below=0.3 of P] (H2) {$H_2^\prime(s)$};
\draw[->] (inputw) node[above right]{$w$} -- (sub.west);
\draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (W2.west);
\draw[->] (inputu-|sub) node[branch]{} -- (sub.south);
\draw[->] (sub.east) -- (W1.west);
\draw[->] ($(sub.west)+(-0.6, 0)$) node[branch]{} |- (Hw.west);
\draw[->] (Hw.east) -- ($(outputv)+(-0.35, 0)$) node[above]{$v$} |- (H2.east);
\draw[->] (W1.east) -- (output1)node[above left]{$z_1$};
\draw[->] (W2.east) -- (output2)node[above left]{$z_2$};
\end{tikzpicture}
#+end_src
#+name: fig:h_infinity_arch_H2_feature
#+caption: Generalized plant with included wanted feature represented by $H_{2w}(s)$
#+RESULTS:
[[file:figs/h_infinity_arch_H2_feature.png]]
After synthesis, the obtained filter will be:
\begin{equation}
H_2(s) = H_2^\prime(s) H_{2w}(s)
\end{equation}
and therefore the "feature" will be included in the filter.
For $H_1(s)$ nothing is changed: $H_1(s) = 1 - H_2(s)$.
The weighting functions are defined as usual:
#+begin_src matlab
n = 2; w0 = 2*pi*11; G0 = 1/10; G1 = 1000; Gc = 1/2;
W1 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
n = 3; w0 = 2*pi*10; G0 = 1e4; G1 = 0.1; Gc = 1/2;
W2 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
#+end_src
The wanted feature here is a +2 slope at low frequency.
For that, we use an high pass filter with a slope of +2 at low frequency.
#+begin_src matlab
w0 = 2*pi*50;
H2w = (s/w0/(s/w0+1))^2;
#+end_src
We define the generalized plant as shown in Figure [[fig:h_infinity_arch_H2_feature]].
#+begin_src matlab
P = [W1 -W1;
0 W2;
H2w 0];
#+end_src
And we do the $\mathcal{H}_\infty$ synthesis using the =hinfsyn= command.
#+begin_src matlab :results output replace :exports both
[H2p, ~, gamma, ~] = hinfsyn(P, 1, 1,'TOLGAM', 0.001, 'METHOD', 'lmi', 'DISPLAY', 'on');
#+end_src
Finally, we define $H_2(s)$ as the product of the synthesized filter and the wanted "feature":
#+begin_src matlab
H2 = H2p*H2w;
#+end_src
And we define $H_1(s)$ to be the complementary of $H_2(s)$:
#+begin_src matlab
H1 = 1 - H2;
#+end_src
The obtained complementary filters are shown in Figure [[fig:comp_filters_H2_feature]].
#+begin_src matlab :exports none
freqs = logspace(-3, 3, 1000);
figure;
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
% Magnitude
ax1 = nexttile([2, 1]);
hold on;
set(gca,'ColorOrderIndex',1)
plot(freqs, 1./abs(squeeze(freqresp(W1, freqs, 'Hz'))), '--', 'DisplayName', '$w_1$');
set(gca,'ColorOrderIndex',2)
plot(freqs, 1./abs(squeeze(freqresp(W2, freqs, 'Hz'))), '--', 'DisplayName', '$w_2$');
set(gca,'ColorOrderIndex',1)
plot(freqs, abs(squeeze(freqresp(H1, freqs, 'Hz'))), '-', 'DisplayName', '$H_1$');
set(gca,'ColorOrderIndex',2)
plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), '-', 'DisplayName', '$H_2$');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude');
set(gca, 'XTickLabel',[]);
legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
% Phase
ax2 = nexttile;
hold on;
set(gca,'ColorOrderIndex',1)
plot(freqs, 180/pi*phase(squeeze(freqresp(H1, freqs, 'Hz'))), '-');
set(gca,'ColorOrderIndex',2)
plot(freqs, 360+180/pi*phase(squeeze(freqresp(H2, freqs, 'Hz'))), '-');
hold off;
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
set(gca, 'XScale', 'log');
yticks([-180:90:180]);
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/comp_filters_H2_feature.pdf', 'width', 'wide', 'height', 'tall');
#+end_src
#+name: fig:comp_filters_H2_feature
#+caption: Obtained complementary fitlers
#+RESULTS:
[[file:figs/comp_filters_H2_feature.png]]
** Imposing a negative slope at infinity frequency during the synthesis phase
Let's suppose we now want to shape a low pass filter that as a negative slope until infinite frequency.
The used technique is the same as in the previous section, and the generalized plant is shown in Figure [[fig:h_infinity_arch_H2_feature]].
The weights are defined as usual.
#+begin_src matlab
n = 3; w0 = 2*pi*10; G0 = 1000; G1 = 0.1; Gc = 1/2;
W1 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
n = 2; w0 = 2*pi*11; G0 = 1/10; G1 = 1000; Gc = 1/2;
W2 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
#+end_src
This time, the feature is a low pass filter with a slope of -2 at high frequency.
#+begin_src matlab
H2w = 1/(s/(2*pi*10) + 1)^2;
#+end_src
The generalized plant is defined:
#+begin_src matlab
P = [W1 -W1;
0 W2;
H2w 0];
#+end_src
And we do the $\mathcal{H}_\infty$ synthesis using the =hinfsyn= command.
#+begin_src matlab :results output replace :exports both
[H2p, ~, gamma, ~] = hinfsyn(P, 1, 1,'TOLGAM', 0.001, 'METHOD', 'lmi', 'DISPLAY', 'on');
#+end_src
The feature is added to the synthesized filter:
#+begin_src matlab
H2 = H2p*H2w;
#+end_src
And $H_1(s)$ is defined as follows:
#+begin_src matlab
H1 = 1 - H2;
#+end_src
The obtained complementary filters are shown in Figure [[fig:comp_filters_H2_feature_neg_slope]].
#+begin_src matlab :exports none
freqs = logspace(-1, 4, 1000);
figure;
tiledlayout(3, 1, 'TileSpacing', 'None', 'Padding', 'None');
% Magnitude
ax1 = nexttile([2, 1]);
hold on;
set(gca,'ColorOrderIndex',1)
plot(freqs, 1./abs(squeeze(freqresp(W1, freqs, 'Hz'))), '--', 'DisplayName', '$w_1$');
set(gca,'ColorOrderIndex',2)
plot(freqs, 1./abs(squeeze(freqresp(W2, freqs, 'Hz'))), '--', 'DisplayName', '$w_2$');
set(gca,'ColorOrderIndex',1)
plot(freqs, abs(squeeze(freqresp(H1, freqs, 'Hz'))), '-', 'DisplayName', '$H_1$');
set(gca,'ColorOrderIndex',2)
plot(freqs, abs(squeeze(freqresp(H2, freqs, 'Hz'))), '-', 'DisplayName', '$H_2$');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude');
set(gca, 'XTickLabel',[]);
legend('location', 'southeast', 'FontSize', 8, 'NumColumns', 2);
% Phase
ax2 = nexttile;
hold on;
set(gca,'ColorOrderIndex',1)
plot(freqs, 180/pi*phase(squeeze(freqresp(H1, freqs, 'Hz'))), '-');
set(gca,'ColorOrderIndex',2)
plot(freqs, 180/pi*phase(squeeze(freqresp(H2, freqs, 'Hz'))), '-');
hold off;
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
set(gca, 'XScale', 'log');
yticks([-180:90:180]);
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
#+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/comp_filters_H2_feature_neg_slope.pdf', 'width', 'wide', 'height', 'tall');
#+end_src
#+name: fig:comp_filters_H2_feature_neg_slope
#+caption: Obtained complementary fitlers
#+RESULTS:
[[file:figs/comp_filters_H2_feature_neg_slope.png]]
* Bibliography :ignore:
bibliographystyle:unsrt
bibliography:ref.bib