From octave-sources-request at bevo dot che dot wisc dot edu Wed Apr 29 08:19:31 1998 Subject: Contributed functions attached From: William D Kirby To: octave-sources Date: Wed, 29 Apr 1998 09:17:46 -0400 This is a multi-part message in MIME format. --------------76FA98806681E46ABABCB37B Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Attached are contributed m-files for Octave. Two of them produce averaged power spectrums of a time series. One of them may be redundant. The best one is the one that has the option to use overlapped fft frames. Another provides an estimate of time series coherency using the fft. Thus coherency is given as a function of frequency. The last produces a matrix of overlapped fft outputs that can be used to produce for example a 3D display of short term spectra vs time. -- William D. Kirby Voice: (703) 273-0005 Consultant Email: wdkirby at ix dot netcom dot com 3527 Cornell Road Fairfax, VA 22030-1813 --------------76FA98806681E46ABABCB37B Content-Type: application/x-unknown-content-type-m_auto_file; name="my_avgolspec.m" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="my_avgolspec.m" IyMgQ29weXJpZ2h0IChDKSAxOTk4IEpvaG4gVy4gRWF0b24NCiMjDQojIyBUaGlzIGZpbGUg aXMgcGFydCBvZiBPY3RhdmUuDQojIw0KIyMgT2N0YXZlIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQNCiMjIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 DQojIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv ciAoYXQgeW91ciBvcHRpb24pDQojIyBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMjDQojIyBPY3Rh dmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwg YnV0DQojIyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mDQojIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KIyMgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyMNCiMjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIyBhbG9uZyB3aXRo IE9jdGF2ZTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlDQojIyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz MzAsIEJvc3RvbiwgTUENCiMjIDAyMTExLTEzMDcsIFVTQS4NCg0KIyBSb3V0aW5lIGZvciBj b21wdXRpbmcgYXZlcmFnZSBwb3dlciBzcGVjdHJ1bSB3aXRoIG92ZXJsYXAuDQojDQojIHVz YWdlOiBbcHdyc3BlYyxuXSA9IGF2Z29scHNwZWMoeCwgTiBbLCBPdmxdIFssV10pDQojDQoj IHggPSBpbnB1dCBzYW1wbGUgc2VyaWVzICh2ZWN0b3IpDQojIE4gPSBzYW1wbGVzIHBlciBG RlQgZnJhbWUNCiMgT3ZsID0gc2FtcGxlcyBvZiBvdmVybGFwIGRlZmF1bHQgbm9uZQ0KIyBX ID0gb3B0aW9uYWwgd2luZG93IHdlaWdodGluZyB2ZWN0b3IsIHNpemUgW04sMV0gZGVmYXVs dCB1bmlmb3JtDQojIHB3cnNwZWMgPSBhdmVyYWdlIHBvd2VyIHNwZWN0cnVtIG91dHB1dCB2 ZWN0b3INCiMgbiA9IG51bWJlciBvZiBmZnQncyB1c2VkIGluIGF2ZXJhZ2UNCiMNCg0KIyBB dXRob3I6IFcuIEQuIEtpcmJ5LCAyMCBBcHJpbCA5OC4gd2RraXJieUBpeC5uZXRjb20uY29t DQojIyBBZGFwdGVkLUJ5OiBqd2UNCg0KDQpmdW5jdGlvbiBbcHdyLG5dID0gYXZnb2xwc3Bl Yyh4LCBOLCBPdmwsIFcpDQoNCiAgaWYgKG5hcmdpbiA8IDIgfHwgbmFyZ2luID4gNCkNCiAg ICB1c2FnZSAoIiBbcHdyLG5dID0gYXZncHdyc3BlYyAoeCAsIE4gWyxPdmxdIFssIFddKSIp Ow0KICBlbmRpZg0KDQoJdXNlVyA9IDA7DQoNCglpZiAobmFyZ2luIDwzKSBPdmwgPTAsIGVu ZGlmOyAjIHVzZSBub24gb3ZlcmxhcGVkIGF2ZXJhZ2UNCg0KICBbcl94LCBjX3hdID0gc2l6 ZSAoeCk7DQogIGlmIChjX3ggIT0gMSkNCiAgICBlcnJvciAoImF2Z3B3cnNwZWM6IHggc2hv dWxkIGJlIGEgdmVjdG9yIik7DQogIGVuZGlmDQoNCgkjIGNoZWNrIGlucHV0IGZvciB3ZWln aHQgdmVjdG9yDQogIGlmIChuYXJnaW4gPiAzKQ0KICAgIFtyX3csIGNfd10gPSBzaXplIChX KTsNCiAgICBpZiAoY193ICE9IDEpDQogICAgICBlcnJvciAoImF2Z292bHBzcGVjOiBXIHNo b3VsZCBiZSBhIHZlY3RvciIpOw0KICAgIGVuZGlmDQogICAgaWYocl93ICE9IE4pDQogICAg ICBlcnJvciAoImF2Z3BvdmxzcGVjOiBXIHNob3VsZCBiZSBhIHZlY3RvciBvZiBsZW5ndGgg JWkiLE4pDQogICAgZW5kaWYNCiAgICB1c2VXID0gMTsNCiAgZW5kaWYgIyBlbmQgY2hlY2sg Zm9yIHdlaWdodCB2ZWN0b3INCg0KCUZyYW1lTz0gTi1Pdmw7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAJIyBmcmFtZSBPZmZzZXQNCglORnJhbWVzID0gZmxvb3IoKGxlbmd0aCh4 KS1PdmwpIC8gRnJhbWVPKTsgCSMgbnVtYmVyIG9mIGZyYW1lcw0KCXB3cj0gemVyb3MoTiwx KTsgICAgICAgICAgICAgICAgICAgICAJCQkJIyB6ZXJvIHB3ciB2ZWN0b3INCgl5ID0gcHdy OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkJCSMgemVybyBmcmFtZSB2ZWN0b3Ig ICANCgl5ZiA9IHB3ciArIGkqcHdyOyAgICAgICAgICAgICAgICAgICAgCQkJCSMgemVybyBm ZnQgY29tcGxleCB2ZWN0b3INCg0KDQoJIyBsb29wIG9uIGZyYW1lcw0KCWZvciBuPTE6TkZy YW1lcw0KCQlOZiA9IEZyYW1lTyAqIChuLTEpOyAjIGZyYW1lIChzdGFydCBzYW1wbGUgLTEp IG9uIGlucHV0IHZlY3Rvcg0KCQkjIGxvYWQgZnJhbWUgd2l0aCBOIHNhbXBsZXMNCgkJZm9y IGlkeD0xOk4NCgkJCXkoaWR4KSA9IHgoTmYgKyBpZHggKTsNCgkJZW5kZm9yDQoNCgkJIyB3 ZWlnaHQgZnJhbWUgPw0KICAJaWYodXNlVz09MSkNCgkJCXkgPSB5IC4qIFc7ICAgIyBhcHBs eSB3ZWlnaHQgdmVjdG9yDQogIAllbmRpZg0KDQoJCSMgcGVyZm9ybSBmZnQgb24gZnJhbWUg c2FtcGxlcw0KICAJeWYgPSBmZnQoeSk7DQoNCgkJIyBjb21wdXRlIHBvd2VyIHNwZWN0cnVt DQogIAlwd3IgPSBwd3IgKyAoeWYgLiogY29uaih5ZikpOw0KCWVuZGZvciAjIGVuZCBvZiBm cmFtZSBwcm9jZXNzDQoNCgkjIGNvbXB1dGUgYXZlcmFnZQ0KICBwd3IgPSBwd3IuL247DQoN CmVuZGZ1bmN0aW9uDQoNCg0K --------------76FA98806681E46ABABCB37B Content-Type: application/x-unknown-content-type-m_auto_file; name="my_avgpspec.m" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="my_avgpspec.m" IyMgQ29weXJpZ2h0IChDKSAxOTk4IEpvaG4gVy4gRWF0b24NCiMjDQojIyBUaGlzIGZpbGUg aXMgcGFydCBvZiBPY3RhdmUuDQojIw0KIyMgT2N0YXZlIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQNCiMjIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 DQojIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv ciAoYXQgeW91ciBvcHRpb24pDQojIyBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMjDQojIyBPY3Rh dmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwg YnV0DQojIyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mDQojIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KIyMgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyMNCiMjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIyBhbG9uZyB3aXRo IE9jdGF2ZTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlDQojIyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz MzAsIEJvc3RvbiwgTUENCiMjIDAyMTExLTEzMDcsIFVTQS4NCg0KIyBSb3V0aW5lIGZvciBj b21wdXRpbmcgYXZlcmFnZSBwb3dlciBzcGVjdHJ1bSB3aXRoIG5vIG92ZXJsYXAuDQojDQoj IHVzYWdlOiBbcHdyc3BlYyxuXSA9IGF2Z3B3cnNwZWMoeCwgTiBbLCBXXSkNCiMNCiMgeCA9 IGlucHV0IHNhbXBsZSBzZXJpZXMgKHZlY3RvcikNCiMgTiA9IHNhbXBsZXMgcGVyIEZGVCBm cmFtZQ0KIyBXID0gb3B0aW9uYWwgd2luZG93IHdlaWdodGluZyB2ZWN0b3IsIHNpemUgW04s MV0gKGRlZnVhbHQgdW5pZm9ybSkNCiMNCiMgcHdyc3BlYyA9IG91dHB1dCBwb3dlciBzcGVj dHJ1bSAodmVjdG9yKQ0KIyBuID0gb3V0cHV0IG51bWJlciBvZiBmcmFtZXMgYXZlcmFnZWQg aW4gb3V0cHV0DQoNCiMgQXV0aG9yOiBXLiBELiBLaXJieSwgMjAgQXByaWwgOTguIHdka2ly YnlAaXgubmV0Y29tLmNvbQ0KIyMgQWRhcHRlZC1CeTogandlDQoNCg0KZnVuY3Rpb24gW3B3 cixuXSA9IGF2Z3B3cnNwZWMoeCwgTiwgVykNCg0KICBpZiAobmFyZ2luIDwgMiB8fCBuYXJn aW4gPiAzKQ0KICAgIHVzYWdlICgiIGF2Z3B3cnNwZWMgKHggLCBOWywgV10pIik7DQogIGVu ZGlmDQoNCgl1c2VXID0gMDsNCg0KICBbcl94LCBjX3hdID0gc2l6ZSAoeCk7DQogIGlmIChj X3ggIT0gMSkNCiAgICBlcnJvciAoImF2Z3B3cnNwZWM6IHggc2hvdWxkIGJlIGEgdmVjdG9y Iik7DQogIGVuZGlmDQoNCgkjIGNoZWNrIGlucHUgZm9yIHdlaWdodCB2ZWN0b3INCiAgaWYg KG5hcmdpbiA+IDIpDQogICAgW3JfdywgY193XSA9IHNpemUgKFcpOw0KICAgIGlmIChjX3cg IT0gMSkNCiAgICAgIGVycm9yICgiYXZncHdyc3BlYzogVyBzaG91bGQgYmUgYSB2ZWN0b3Ii KTsNCiAgICBlbmRpZg0KICAgIGlmKHJfdyAhPSBOKQ0KICAgICAgZXJyb3IgKCJhdmdwd3Jz cGVjOiBXIGhhdmUgYSB2ZWN0b3IgbGVuZ3RoIG9mICVpIixOKQ0KICAgIGVuZGlmDQogICAg dXNlVyA9IDE7DQogIGVuZGlmICMgZW5kIGNoZWNrIGZvciB3ZWlnaHQgdmVjdG9yDQoNCglG cmFtZUw9IE47ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmcmFtZSBsZW5ndGgNCglO RnJhbWVzID0gZmxvb3IobGVuZ3RoKHgpIC8gRnJhbWVMKTsgIyBudW1iZXIgb2YgZnJhbWVz DQoJcHdyPSB6ZXJvcyhOLDEpOyAgICAgICAgICAgICAgICAgICAgICMgemVybyBwd3IgdmVj dG9yDQoJeSA9IHB3cjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgemVybyBmcmFt ZSB2ZWN0b3IgICANCgl5ZiA9IHB3ciArIGkqcHdyOyAgICAgICAgICAgICAgICAgICAgIyB6 ZXJvIGZmdCBjb21wbGV4IHZlY3Rvcg0KDQoJIyBsb29wIG9uIGZyYW1lcw0KCWZvciBuPTE6 TkZyYW1lcw0KCQlOZiA9IEZyYW1lTCAqIChuLTEpOyAjIGZyYW1lIChzdGFydCBzYW1wbGUg LTEpIG9uIGlucHV0IHZlY3Rvcg0KCQkjIGxvYWQgZnJhbWUgd2l0aCBOIHNhbXBsZXMNCgkJ Zm9yIGlkeD0xOkZyYW1lTA0KCQkJeShpZHgpID0geChOZiArIGlkeCApOw0KCQllbmRmb3IN Cg0KCQkjIHdlaWdodCBmcmFtZSA/DQogIAlpZih1c2VXPT0xKQ0KCQkJeSA9IHkuKlc7ICAg IyBhcHBseSB3ZWlnaHQgdmVjdG9yDQogIAllbmRpZg0KDQoJCSMgcGVyZm9ybSBmZnQgb24g ZnJhbWUgc2FtcGxlcw0KICAJeWYgPSBmZnQoeSk7DQoNCgkJIyBjb21wdXRlIHBvd2VyIHNw ZWN0cnVtDQogIAlwd3IgPSBwd3IgKyAoeWYgLiogY29uaih5ZikpOw0KCWVuZGZvciAjIGVu ZCBvZiBmcmFtZSBwcm9jZXNzDQoNCgkjIGNvbXB1dGUgYXZlcmFnZQ0KICBwd3IgPSBwd3Iu L247DQoNCmVuZGZ1bmN0aW9uDQoNCg0K --------------76FA98806681E46ABABCB37B Content-Type: application/x-unknown-content-type-m_auto_file; name="my_fftcoh.m" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="my_fftcoh.m" IyMgQ29weXJpZ2h0IChDKSAxOTk4IEpvaG4gVy4gRWF0b24NCiMjDQojIyBUaGlzIGZpbGUg aXMgcGFydCBvZiBPY3RhdmUuDQojIw0KIyMgT2N0YXZlIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQNCiMjIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 DQojIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv ciAoYXQgeW91ciBvcHRpb24pDQojIyBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMjDQojIyBPY3Rh dmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwg YnV0DQojIyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mDQojIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KIyMgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyMNCiMjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIyBhbG9uZyB3aXRo IE9jdGF2ZTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlDQojIyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz MzAsIEJvc3RvbiwgTUENCiMjIDAyMTExLTEzMDcsIFVTQS4NCg0KIyBSb3V0aW5lIGZvciBj b21wdXRpbmcgY29oZXJlbmNlIHZzIEZyZXEuIGZyb20gb3ZlcmxhcHBlZCBmZnQncy4NCiMN CiMgdXNhZ2U6IFtjb2gsbl0gPSBmZnRjb2goeCx5LCBOIFssIE92bF0gWyxXXSkNCiMNCiMg eCA9IGlucHV0IHNhbXBsZSBzZXJpZXMgKHZlY3RvciAtIHJlYWwgb3IgY29tcGxleCkNCiMg eSA9IGlucHV0IHNhbXBsZSBzZXJpZXMgKHZlY3RvciAtIHJlYWwgb3IgY29tcGxleCkNCiMg TiA9IHNhbXBsZXMgcGVyIEZGVCBmcmFtZQ0KIyBPdmwgPSBzYW1wbGVzIG9mIG92ZXJsYXAg KGRlZmF1bHQgbm9uZSkNCiMgVyA9IG9wdGlvbmFsIHdpbmRvdyB3ZWlnaHRpbmcgdmVjdG9y LCBzaXplIFtOLDFdIChkZWZhdWx0IHVuaWZvcm0pDQojDQojIGNvaCA9IGNvaGVyZW5jZShm KSBiZXR3ZWVuIGlucHV0IHZlY3RvcnMgKGkuZS4sIGdhbW1hICoqMikNCiMgbiA9IG51bWJl ciBvZiBmZnQncyB1c2VkIGluIGNvbXB1dGF0aW9uDQojDQojIFJlZmVyZW5jZTogUmFuZG9t IERhdGEgQW5hbHlzaXMgYW5kIE1lYXN1cmVtZW50IFByb2NlZHVyZXMsIA0KIyBKLiBTLiBC ZW5kYXQgYW5kIEEuIEcuIFBpZXJzb2wsIDJuZCBlZC4sIFdpbGV5LUludGVyc2NpZW5jZSwg MTk4Ni4NCg0KIyBBdXRob3I6IFcuIEQuIEtpcmJ5LCAyOCBBcHJpbCA5OC4gd2RraXJieUBp eC5uZXRjb20uY29tDQojIyBBZGFwdGVkLUJ5OiBqd2UNCg0KZnVuY3Rpb24gW2NvaCxuXSA9 IGZmdGNvaCh4LCB5LCBOLCBPdmwsIFcpDQoNCiAgaWYgKG5hcmdpbiA8IDMgfHwgbmFyZ2lu ID4gNSkNCiAgICB1c2FnZSAoIiBbY29oLG5dID0gZmZ0Y29oKHggLCB5LCBOIFssT3ZsXSBb LCBXXSkiKTsNCiAgZW5kaWYNCg0KCXVzZVcgPSAwOw0KDQoJaWYgKG5hcmdpbiA8NCkgT3Zs ID0wLCBlbmRpZjsgIyB1c2Ugbm9uIG92ZXJsYXBlZCBhdmVyYWdlDQoNCiAgW3JfeCwgY194 XSA9IHNpemUgKHgpOw0KCVtyX3ksIGNfeV0gPSBzaXplICh5KTsNCgljX21heCA9IG1heChj X3gsY195KTsNCiAgaWYgKGNfbWF4ICE9IDEgfHwgcl94ICE9IHJfeSkNCiAgICBlcnJvciAo ImZmdGNvaDogeCBhbmQgeSBzaG91bGQgYmUgZXF1YWwgc2l6ZWQgdmVjdG9ycyIpOw0KICBl bmRpZg0KDQoJIyBjaGVjayBpbnB1dCBmb3IgZmZ0IHdpbmRvdyB3ZWlnaHQgdmVjdG9yDQog IGlmIChuYXJnaW4gPiA0KQ0KICAgIFtyX3csIGNfd10gPSBzaXplIChXKTsNCiAgICBpZiAo Y193ICE9IDEpDQogICAgICBlcnJvciAoImZmdGNvaDogVyBzaG91bGQgYmUgYSB2ZWN0b3Ii KTsNCiAgICBlbmRpZg0KICAgIGlmKHJfdyAhPSBOKQ0KICAgICAgZXJyb3IgKCJmZnRjb2g6 IFcgc2hvdWxkIGJlIGEgdmVjdG9yIG9mIGxlbmd0aCAlaSIsTikNCiAgICBlbmRpZg0KICAg IHVzZVcgPSAxOw0KICBlbmRpZiAjIGVuZCBjaGVjayBmb3Igd2VpZ2h0IHZlY3Rvcg0KDQoJ RnJhbWVPPSBOLU92bDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkjIGZyYW1lIE9m ZnNldA0KCU5GcmFtZXMgPSBmbG9vcigobGVuZ3RoKHgpLU92bCkgLyBGcmFtZU8pOyAJIyBu dW1iZXIgb2YgZnJhbWVzDQoJY29oPSB6ZXJvcyhOLDEpOyAgICAgICAgICAgICAgICAgICAg IAkJCQkjIHplcm8gY29oZXJlbmNlIHZlY3Rvcg0KCUd4eCA9IGNvaDsgICAgICAgICAgICAJ CQkJCQkJCQkJCSMgemVybyBmcmFtZSB2ZWN0b3JzDQogIEd5eSA9IGNvaDsNCglHeHkgPSB6 ZXJvcyhOLDEpICsgaSp6ZXJvcyhOLDEpOw0KCUdhbW1hID0gR3h5OyANCgl4ZiA9IEd4eTsg ICAgICAgICAgICAgICAgICAgIAkJCQkNCgl5ZiA9IEd4eTsNCg0KCSMgbG9vcCBvbiBmcmFt ZXMNCglmb3Igbj0xOk5GcmFtZXMNCgkJTmYgPSBGcmFtZU8gKiAobi0xKTsgIyBmcmFtZSAo c3RhcnQgc2FtcGxlIC0xKSBvbiBpbnB1dCB2ZWN0b3INCgkJIyBsb2FkIGZyYW1lcyB3aXRo IE4gc2FtcGxlcw0KCQlmb3IgaWR4PTE6Tg0KCQkJeDEoaWR4KSA9IHgoTmYgKyBpZHggKTsN CgkJCXkxKGlkeCkgPSB5KE5mICsgaWR4ICk7DQoJCWVuZGZvcg0KDQoJCSMgd2VpZ2h0IGZy YW1lID8NCiAgCWlmKHVzZVc9PTEpDQoJCQl4MSA9IHgxIC4qIFc7ICAgIyBhcHBseSB3ZWln aHQgdmVjdG9yDQoJCQl5MSA9IHkxIC4qIFc7DQogIAllbmRpZg0KDQoJCSMgcGVyZm9ybSBm ZnRzIG9uIGZyYW1lIHNhbXBsZXMNCgkJeGYgPSBmZnQoeDEpOw0KICAJeWYgPSBmZnQoeTEp Ow0KDQoJCSMgY29tcHV0ZSBhdXRvLSBhbmQgY3Jvc3Mtc3BlY3RydW1zDQogIAlHeHggPSB4 ZiAuKiBjb25qKHhmKTsNCiAgCUd5eSA9IHlmIC4qIGNvbmooeWYpOw0KICAJR3h5ID0geGYg LiogY29uaih5Zik7DQoJCUdhbW1hID0gR2FtbWEgKyAoR3h5Li9zcXJ0KEd4eCAuKiBHeXkp KTsgIyBzaG9ydCB0ZXJtIGVzdGltYXRlDQoNCgllbmRmb3IgIyBlbmQgb2YgZnJhbWUgcHJv Y2Vzcw0KDQoJCUdhbW1hID0gR2FtbWEvbjsJCQkJCQkJCQkJCQkJIyBjb21wbGV4IGNvaGVy ZW5jeQ0KCQljb2ggPSBHYW1tYSAuKiBjb25qKEdhbW1hKTsJCQkJCQkJCSMgb3JkaW5hcnkg Y29oZXJlbmN5DQoNCmVuZGZ1bmN0aW9uDQoNCg0K --------------76FA98806681E46ABABCB37B Content-Type: application/x-unknown-content-type-m_auto_file; name="my_spec3d.m" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="my_spec3d.m" IyMgQ29weXJpZ2h0IChDKSAxOTk4IEpvaG4gVy4gRWF0b24NCiMjDQojIyBUaGlzIGZpbGUg aXMgcGFydCBvZiBPY3RhdmUuDQojIw0KIyMgT2N0YXZlIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQNCiMjIHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 DQojIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv ciAoYXQgeW91ciBvcHRpb24pDQojIyBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMjDQojIyBPY3Rh dmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwg YnV0DQojIyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mDQojIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KIyMgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyMNCiMjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQojIyBhbG9uZyB3aXRo IE9jdGF2ZTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlDQojIyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz MzAsIEJvc3RvbiwgTUENCiMjIDAyMTExLTEzMDcsIFVTQS4NCg0KIyBSb3V0aW5lIGZvciBj b21wdXRpbmcgcG93ZXIgc3BlY3RydW0gZnJhbWVzIHdpdGggb3ZlcmxhcC4NCiMNCiMgdXNh Z2U6IFtwd3JzcGVjLG5dID0gcHdyc3BlYzNkKHgsIE4gWywgT3ZsXSBbLFddKQ0KIw0KIyB4 ID0gaW5wdXQgc2FtcGxlIHNlcmllcyAodmVjdG9yKQ0KIyBOID0gc2FtcGxlcyBwZXIgRkZU IGZyYW1lDQojIE92bCA9IHNhbXBsZXMgb2Ygb3ZlcmxhcCAoZGVmYXVsdCBub25lKQ0KIyBX ID0gb3B0aW9uYWwgd2luZG93IHdlaWdodGluZyB2ZWN0b3IsIHNpemUgW04sMV0gKGRlZmF1 bHQgdW5pZm9ybSkNCiMgcHdyc3BlYyA9IHBvd2VyIHNwZWN0cnVtIG91dHB1dCBOIHggbiBt YXRyaXgNCiMgbiA9IG51bWJlciBvZiBmZnQncyBpbiBvdXRwdXQNCg0KIyBBdXRob3I6IFcu IEQuIEtpcmJ5LCAyNyBBcHJpbCA5OC4gd2RraXJieUBpeC5uZXRjb20uY29tDQojIyBBZGFw dGVkLUJ5OiBqd2UNCg0KDQpmdW5jdGlvbiBbcHdyLG5dID0gcHdyc3BlYzNkKHgsIE4sIE92 bCwgVykNCg0KICBpZiAobmFyZ2luIDwgMiB8fCBuYXJnaW4gPiA0KQ0KICAgIHVzYWdlICgi IFtwd3Isbl0gPSBwd3JzcGVjM2QgKHggLCBOIFssT3ZsXSBbLCBXXSkiKTsNCiAgZW5kaWYN Cg0KCXVzZVcgPSAwOw0KDQoJaWYgKG5hcmdpbiA8MykgT3ZsID0wLCBlbmRpZjsgIyB1c2Ug bm9uIG92ZXJsYXBlZCBhdmVyYWdlDQoNCiAgW3JfeCwgY194XSA9IHNpemUgKHgpOw0KICBp ZiAoY194ICE9IDEpDQogICAgZXJyb3IgKCJwd3JzcGVjM2Q6IHggc2hvdWxkIGJlIGEgdmVj dG9yIik7DQogIGVuZGlmDQoNCgkjIGNoZWNrIGlucHV0IGZvciB3ZWlnaHQgdmVjdG9yDQog IGlmIChuYXJnaW4gPiAzKQ0KICAgIFtyX3csIGNfd10gPSBzaXplIChXKTsNCiAgICBpZiAo Y193ICE9IDEpDQogICAgICBlcnJvciAoInB3cnNwZWMzZDogVyBzaG91bGQgYmUgYSB2ZWN0 b3IiKTsNCiAgICBlbmRpZg0KICAgIGlmKHJfdyAhPSBOKQ0KICAgICAgZXJyb3IgKCJwd3Jz cGVjM2Q6IFcgc2hvdWxkIGJlIGEgdmVjdG9yIG9mIGxlbmd0aCAlaSIsTikNCiAgICBlbmRp Zg0KICAgIHVzZVcgPSAxOw0KICBlbmRpZiAjIGVuZCBjaGVjayBmb3Igd2VpZ2h0IHZlY3Rv cg0KDQoJRnJhbWVPPSBOLU92bDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkjIGZy YW1lIE9mZnNldA0KCU5GcmFtZXMgPSBmbG9vcigobGVuZ3RoKHgpLU92bCkgLyBGcmFtZU8p OyAJIyBudW1iZXIgb2YgZnJhbWVzDQoJcHdyPSB6ZXJvcyhOLE5GcmFtZXMpOyAgICAgICAg ICAgICAgIAkJCQkjIHplcm8gcHdyIG1hdHJpeA0KCXkgPSB6ZXJvcyhOLDEpOyAgICAgICAg ICAgICAgICAgICAgICAJCQkJIyB6ZXJvIGZyYW1lIHZlY3RvciAgIA0KCXlmID0gcHdyICsg aSpwd3I7ICAgICAgICAgICAgICAgICAgICAJCQkJIyB6ZXJvIGZmdCBjb21wbGV4IHZlY3Rv cg0KDQoNCgkjIGxvb3Agb24gZnJhbWVzDQoJZm9yIG49MTpORnJhbWVzDQoJCU5mID0gRnJh bWVPICogKG4tMSk7ICMgZnJhbWUgKHN0YXJ0IHNhbXBsZSAtIDEpIG9uIGlucHV0IHZlY3Rv cg0KCQkjIGxvYWQgZnJhbWUgd2l0aCBOIHNhbXBsZXMNCgkJZm9yIGlkeD0xOk4NCgkJCXko aWR4KSA9IHgoTmYgKyBpZHggKTsNCgkJZW5kZm9yDQoNCgkJIyB3ZWlnaHQgZnJhbWUgPw0K ICAJaWYodXNlVz09MSkNCgkJCXkgPSB5IC4qIFc7ICAgIyBhcHBseSB3ZWlnaHQgdmVjdG9y DQogIAllbmRpZg0KDQoJCSMgcGVyZm9ybSBmZnQgb24gZnJhbWUgc2FtcGxlcw0KICAJeWYg PSBmZnQoeSk7DQoNCgkJIyBjb21wdXRlIHBvd2VyIHNwZWN0cnVtDQogIAlwd3IoOixuKSA9 ICh5ZiAuKiBjb25qKHlmKSk7DQoJZW5kZm9yICMgZW5kIG9mIGZyYW1lIHByb2Nlc3MNCg0K ZW5kZnVuY3Rpb24NCg0KDQo= --------------76FA98806681E46ABABCB37B--