0

我正在将传感器中的数据读取到两个静态双 [] 中,称为增益和相位。然后根据用户按下哪个按钮开始从传感器收集数据,我将此数据保存到另一个双 []。

前任:

    if (What_Button == 1){
        oGain = gain;
        oPhase = phase;
        output.setText("OPEN saved");
    }
    if (What_Button == 2){
        sGain = gain;
        sPhase = phase;
        output.setText("SHORT saved");
    }
    if (What_Button == 3){
        lGain = gain;
        lPhase = phase;
        output.setText("LOAD saved");
    }

然后我希望绘制原始增益和相位数据。在此之前,我将增益转换为 dB,将相位转换为度数。

IE

 for (int i=0; i<_steps; i++) {
    phase[i]=Math.toDegrees(phase[i]);
    gain[i]=20*Math.log10(gain[i]);
    }

此绘图工作正常,但在转换增益和相位后,我保存的数据“lgain”“lphase”等发生了变化。就好像它们已立即重新分配给新的增益和相位值。我用 System.out.pritln 命令包围了上面的代码,以查看之前和之后的 lgain、lphase 等值,这肯定是它们被更改的地方。我使用 ctrl-f 来查找 lgain、lphase 等的所有实例,并且它们没有在其他任何地方重新分配。任何想法如何解决这一问题?

C

4

1 回答 1

1

您正在通过引用而不是值复制相位数组。

尝试查看Arrays.CopyOf文档以选择一种静态方法来复制数组。

就像是:

oGain = Arrays.copyOf(gain,gain.length);
于 2013-08-24T21:07:11.460 回答