2014-03-31 15 views
0

我試圖繪製在圖表上的信號響應,我需要一個對數標度爲X和Y. ,定義了兩個函數,一個用於X軸C#圖表AxisY對數不工作

private void Configure_Axis_X(bool Logaritmic, double Maximum, double Minimum, double Interval) 
{ 
    CH_EQ_Chart.ChartAreas[0].AxisX.IsLogarithmic = Logaritmic; 
    CH_EQ_Chart.ChartAreas[0].AxisX.Minimum = Minimum; 
    CH_EQ_Chart.ChartAreas[0].AxisX.Maximum = Maximum; 
    CH_EQ_Chart.ChartAreas[0].AxisX.Interval = Interval; 
    CH_EQ_Chart.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.Black; 
    CH_EQ_Chart.ChartAreas[0].AxisX.MajorGrid.LineDashStyle = Graph.ChartDashStyle.Dash; 
} 

和一個用於Y軸

private void Configure_Axis_Y(bool Logaritmic, double Maximum, double Minimum, double Interval) 
{ 
    CH_EQ_Chart.ChartAreas[0].AxisY.IsLogarithmic = Logaritmic; 
    CH_EQ_Chart.ChartAreas[0].AxisY.Minimum = Minimum; 
    CH_EQ_Chart.ChartAreas[0].AxisY.Maximum = Maximum; 
    CH_EQ_Chart.ChartAreas[0].AxisY.Interval = Interval; 
    CH_EQ_Chart.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Black; 
    CH_EQ_Chart.ChartAreas[0].AxisY.MajorGrid.LineDashStyle = Graph.ChartDashStyle.Dash; 
} 

繪製響應以分貝表示並予想有對數刻度也爲Y.

當我有值的陣列,我得到的最小和格言價值,我嘗試使用

double Abs_Max = Math.Max(y.Max(), z.Max()); 
double Abs_Min = Math.Min(y.Min(), z.Min()); 
Configure_Axis_Y(true, Abs_Max + Abs_Max/10, Abs_Min + Abs_Min/10, 20); 

使用上述功能,但是當我選擇islogaritmic = true一個紅叉,而不是出現在圖表。 如果我設置islogaritmic = false圖片顯示正確。

回答

1

紅色十字是圖表在繪圖過程中處理異常的方式。處理對數刻度時最可能的罪魁禍首是一個或多個數據點具有零或負值。在調試器中檢查什麼時候調用方法是什麼Abs_Min,因爲它很可能在某種程度上在那裏變爲零或負值。

+0

你是對的,謝謝,現在我想解決「如何繪製負值」的問題。 – user2819934