2013-08-24 3 views
0

Я читаю данные с датчика на два статических двойных [], называемых Gain и Phase. Затем, в зависимости от того, какая кнопка нажата для начала сбора данных от датчика, я сохраняю эти данные в другой двойной [].данные переписываются. Android

Ex:

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"); 
    } 

Затем я хочу, чтобы построить оригинальный усиление и фаза данных. Прежде чем я это сделаю, я преобразую коэффициент усиления в дБ, а фазу - в градусы.

т.е.

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

Это зарисовки работает нормально, но после усиления и фазы были преобразованы мои сохраненные данные «lgain» «lphase» и т.д. меняются. Это как если бы они были мгновенно переназначены в новые значения Gain и Phase. Я окружил код выше командами System.out.pritln для просмотра значений lgain, lphase и т. Д. До и после, и это, безусловно, там, где они меняются. Я использовал ctrl-f, чтобы найти все экземпляры lgain, lphase и т. Д., И они не переназначаются нигде. Любые идеи, как это исправить?

C

+0

Показать больше кода, что вокруг МФС? –

+0

Вы не копируете данные, вы копируете ссылки, поэтому это тот же массив. –

ответ

1

Вы копируете фазовый массив по ссылке, а не по значению.

Постарайтесь найти Arrays.CopyOf документацию, чтобы выбрать статический метод для копирования массива.

Что-то вроде:

oGain = Arrays.copyOf(gain,gain.length); 
+0

+1 для обеспечения действительной информации. –