ADS-matlab联合仿真-参数修改

在MATLAB-ADS联合仿真中,通过TADSInterface修改ADS参数时遇到原正则表达式不支持复数的情况。文章介绍了如何修改源码中的正则表达式以匹配复数参数,以及在ADS中设置参数格式,并处理MATLAB与ADS间虚数单位差异的方法。
摘要由CSDN通过智能技术生成

最近使用TADSInterface进行matlab-ADS联合仿真时,涉及到需要将ADS中的参数改为复数,但原先程序的正则表达式搜索范围中不包括复数,需要进行修改

1. 参数形式查看

TADSInterface中提供三种参数输入,引原文如下:

'double': in this case ParamValue must be a numeric value. For this specific exapmle (to change the frequency) we can call the method as ADS.ChangeParameter('SimFreq', 3, 'double'), which would replace the parameter value by 3 keeping units unchanged.
'string': in this case ParamValue must be a string without double quotes, e.g. a file name 'C:\Path\File.ext'. This ParamValue is used only for a string parameter values which are surrounded by double quotes in the netlist file, e.g. a touchstone file name for an SNP component. Since frequecny is not a string, this parameter type is not relevant for this example.
'custom': general case. In this case ParamValue must be a string, which will be written "as is" to the netlist as the parameter value. Please look inside the netlist file to see exact format and units the parameter has.

在此选取custom类型的参数来作为输入。

2. 修改源码中的正则表达式

查看源码中的ChangeComponentParameter()函数部分,发现其在custom对应代码中使用函数GetParameterValueCustomType()来寻找touchstone文件中要修改参数的位置

将返回目标位置与长度的代码改为:

%  将[Tok,iTokExt] = regexp(Ln,[ParamName'\s?=\s?(.+?)\s+[\w\[\]]+\s?='], 'tokens','tokenExtents');
%改为
[Tok,iTokExt] = regexp(Ln,[ParamName '\s?=\s?((?:[-+]?\d*\.?\d+\*?[ij]?([ij]?[-+]?\d*\.?\d+\*?[ij])?)?)\s*\\?'], 'tokens','tokenExtents');

3. 在ADS中修改初始参数

TADSInterface只会在touchstone文件中修改对应参数的值来影响仿真结果,但是不会对原理图中的值进行修改,所以首先需要将原理图中的初始参数设置为代码可以检测到的格式(即修改后的正则表达式对应的格式),如纯实数,或者格式为 'a+b*j' 的复数,如下图所示

4. 修改参数类型与复数符号

由于custom类型的输入必须为字符串,且matlab中默认的虚数单位都是i,但是ADS中使用的是j,故需要对参数的类型进行转换,可以参考如下代码:

% 这是修改S4P参数的一段代码
ADS.ChangeComponentParameter('S_Port:S3P2', 'S[1,2]', strrep(num2str(-1i/sqrt(2)),'i','*j'), 'custom');
ADS.ChangeComponentParameter('S_Port:S3P2', 'S[2,1]', strrep(num2str(-1i/sqrt(2)),'i','*j'), 'custom');
ADS.ChangeComponentParameter('S_Port:S3P2', 'S[2,3]', strrep(num2str(1/sqrt(2)),'i','*j'), 'custom');
ADS.ChangeComponentParameter('S_Port:S3P2', 'S[3,2]', strrep(num2str(1/sqrt(2)),'i','*j'), 'custom');  
% 使用num2str将参数转换为字符串,而后使用strrep替换掉字符串中的i即可

经过以上步骤后应该可以运行代码并直接修改参数为复数了,如下:

 可以看到Z4P元件中的Z11被修改。

ADSMATLAB联合仿真是一种通过将高频电磁设计软件ADS和数学建模软件MATLAB进行协同工作来实现的仿真方法。它结合了两种软件的优势,提供了更全面、准确和高效的仿真和分析能力。 首先,ADS是一种专门针对射频、微波和毫米波电路设计与仿真的软件工具,它具有强大的电磁仿真引擎和高度集成的设计环境。它提供了丰富的射频组件库、优化工具和统计分析功能,可以进行电路元件的建模、电磁场的分析和电路的仿真等。而MATLAB是一种强大的数学建模和仿真软件,它提供了丰富的数学工具和算法,能够进行信号处理、数据分析和系统建模等。 联合使用ADSMATLAB可以充分发挥它们各自的优势。首先,ADS在高频领域具有专业性和精度,可以进行精确的电磁仿真和电路分析。而MATLAB拥有强大的数学建模和仿真能力,可以进行复杂系统的建模和仿真。通过将两者结合,可以实现更全面的仿真和分析,提高设计的准确性和可靠性。 其次,ADSMATLAB联合使用还可以实现数据的互通和共享。ADS可以将仿真结果和数据导出到MATLAB进行进一步分析和处理,而MATLAB也可以将生成的数据反馈到ADS进行电路和系统优化。通过两者之间的数据交互,可以更好地了解设计的特性和优化方向,提高设计效率和准确性。 综上所述,ADSMATLAB联合仿真可以实现更全面、准确和高效的仿真和分析,提高设计的可靠性和效率。它为高频电磁设计和数学建模提供了一种更加强大、综合的解决方案,对于电子电路的设计和优化具有重要的意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值