这是我的问题:我有一个n维矩阵(numpy数组),其长轴包含我需要的数据。
我需要归一化矩阵的每个条目。例如,对于这样的矩阵:
public interface MyCallback {
public void updateMyText(int index, long time);
}
public Timer(int index, long startTimeMilliseconds) {
this.index = index;
this.time = startTimeMilliseconds;
mTimeLeftInMillis = startTimeMilliseconds;
startTime = startTimeMilliseconds;
}
public void startTimer() {
mCountDownTimer = new CountDownTimer(mTimeLeftInMillis, 1000) {
@Override
public void onTick(long millisUntilFinished) {
mTimeLeftInMillis = millisUntilFinished;
updateCountDownText();
}
@Override
public void onFinish() {
mTimerRunning = false;
}
}.start();
mTimerRunning = true;
}
public void resetTimer() {
mCountDownTimer.cancel();
mTimerRunning = false;
mTimeLeftInMillis = startTime;
timeLeftFormatted = formattedTime(startTime);
changeText(index-1);
}
public void updateCountDownText() {
//MainActivity.timerList.get(getIndex()-1).setTime(mTimeLeftInMillis);
//MainActivity.adapter.notifyDataSetChanged();
if(myCallback != null) {
myCallback.updateMyText(getIndex(), mTimeLeftInMillis);
}
}
我需要分别对每一列进行标准化。
在我的代码中,我使用3维数组,因此看起来像这样:
[1 2 3]
[2 3 4]
[7 8 9]
[3 2 1]
我的原始数据包含在to_plot_OFF = FFT_OFF
for row, element in enumerate(to_plot_OFF):
for col, element_c in enumerate(element):
to_plot_OFF[row][col] = element_c/np.max(abs(element_c[10:250]))
to_plot_OFF = np.transpose(to_plot_OFF)
中(我不希望对其进行修改),而处理后的数据包含在FFT_OFF
中。
我使用第一行来获得所需的矩阵形状。循环分别对每个数据列进行标准化。
问题是,在循环结束时,两个矩阵(to_plot_OFF
和to_plot_OFF
)都是相同的(换位除外)!更糟糕的是,矩阵FFT_OFF
在循环过程中以某种方式被修改,并且其条目被标准化。
我不明白这里发生了什么。如果我尝试举一个简单的例子:
FFT_OFF
它不会修改变量a。
任何人都可以对这里发生的事情提供一些见解吗?我怀疑这与第一行有关,我在其中写a = np.array([1,2,3])
b = a
b = b/np.max(b)
。但是,这行难道不应该为矩阵to_plot_OFF = FFT_OFF
在内存中分配一个新块,而不是仅仅声明一个指向to_plot_OFF
的相同内存地址的指针吗?
任何帮助将不胜感激。
谢谢!