-
-
November 22, 2023 at 6:59 pm1692904734Subscriber
您好,我在INTERCONNECT中创建了一个script element,其结构是三输入,单输出,输入输出均为光脉冲信号;想实现的功能是:y是一组权重矩阵【1,0.5,2,3】,in端口为输入信号,drop和through端口为权值修改信号,y的起始权重为2,当检测到drop口有输入时,y的索引值会向上增加一个,即y变为3;当检测到through口有输入时,y的索引值会向下减少一个,即y变为0.5;当两个端口都检测不到数值时,y值会变为1;并将最终得到的y的数值成作为信号增益权重,将乘完权重的信号输出。
目前遇到的问题时,当drop口有输入,through没有输入时,依然显示的是y=1(正常情况应该是y=3),请问该如何解决?
(drop和through口的输入,零输入有幅值为0的噪声提供,其余输入由0.01w光脉冲提供)
signalIn = popportframe( "in" );
signalIn2 = popportframe( "drop" );
signalIn3 = popportframe( "through" );
if( signalIn.valid and signalIn2.valid and signalIn3.valid ) {
for( i = 1:length( signalIn.data.signal ) ) {
nChannels = length( signalIn.data.signal{i}.channel );
for( j = 1:nChannels ) {
for(k=1:length(signalIn.data.signal{i}.channel{j}.value)) {
y = [1,0.5,2,3];
if(signalIn2.data.signal{i}.channel{j}.value(k)>0){
y_index = find(y == 2);
y_index = mod(y_index, length(y)) + 1; } #2>0,3
if(signalIn3.data.signal{i}.channel{j}.value(k)>0){
y_index = find(y == 2);
y_index = mod(y_index - 2, length(y)) + 1;} #3>0,0.5
else{
y_index = find(y == 2);
y_index = mod(y_index - 3, length(y)) + 1;
}
signalIn.data.signal{i}.channel{j}.value(k) = y(y_index) * signalIn.data.signal{i}.channel{j}.value(k);
}
}
}
}
pushportframe( "out", signalIn );
-
December 4, 2023 at 7:29 amChih-Hao ChenAnsys Employee
您好
我有幾個疑問。看您的腳本中,如果signalIn3有大於零的值(drop),腳本是直接用等於2的index減掉二,若以[1,0.5,2,3]為例,相當於變成index 1。這好像和您描述的行為不一致。(到drop有输入时,y的索引值会向上增加一个,即y变为3)
同理,如果drop和through都沒有值,腳本是用2的index減掉3,若以[1,0.5,2,3]為例,相當於要找索引值為-1,我覺得有點奇怪。
然後,腳本中是以有沒有大於0去判斷有沒有值,我們能確保通過物件的值都是大於零嗎?有沒有負數甚至是複數的可能呢?
我會建議您先用簡單的腳本出發,先個別測試情況是否符合預期,最後再組合起來。
-
- The topic ‘对于如何使用script element的脚本编辑问题’ is closed to new replies.
-
1131
-
468
-
460
-
225
-
201
© 2024 Copyright ANSYS, Inc. All rights reserved.