【发布时间】:2013-12-15 01:46:16
【问题描述】:
对于我的 Android 应用程序,我需要让 x 轴代表频率轴。目前,我暂时使用 myRenderer.setXlabels() 。但是,这对我的应用程序来说不够有效,因为一旦设置了最小和最大 x 轴标签,如果缩小图形,则在最小 X 标签的左侧和右侧没有 x 轴值的最大 X 标签。此外,如果放大,则仅存在我明确具有程序标签的 x 轴值。因此,如果您放大至少 2 倍,则不会显示 x 轴值 = :(
在 AChartEngine Demo 应用程序中,他们有一个三角函数示例,其中绘制了 0 到 360 度的正弦和余弦波。与此示例类似,我希望我的频率轴从 0 变为采样频率的一半,即 22050 (22.05e3),这样如果放大或缩小,总是存在相对于数据点的 x 轴值.
我将要绘制的数据点数量通常非常大(大致在 10,000 到 40,000 个点之间),但我一次只需要在图表中绘制一行(或一系列)数据。
如果有人知道如何在不使用标签的情况下执行此操作,我将不胜感激。 :)
更新(带示例):
BELOW - 用 Matlab 代码表示频率轴的含义:
x = [0 5 -5 3 -3 1 -1 0];
X = fft(x);
absX = abs(X);
subplot(2,1,1)
plot(abs_X)
title('(a) General x-axis')
freq_axis = linspace(0,22.05e3,8);
subplot(2,1,2)
plot(freq_axis,abs_X)
title('(b) Frequency x-axis (Linearly-spaced)')
由 Matlab 定义:
linspace - 线性间隔向量。
linspace(X1, X2) 生成 X1 和 X2 之间 100 个线性等距点的行向量。
linspace(X1, X2, N) 在 X1 和 X2 之间生成 N 个点。 对于 N = 1,linspace 返回 X2。
所以在更简单的情况下,我只想弄清楚如何更改 x 轴值以表示其他数值(从时域 x 值转换为频域 x 轴值)。
【问题讨论】:
-
我认为您应该添加屏幕截图或其他内容来说明您的需求。
-
我尝试添加图片,但显然我没有足够的“声誉点”来发布图片。所以也许如果你有 Matlab,你可以复制上面的代码并运行脚本来直观地理解我正在尝试使用 AChartEngine 库来实现什么。
-
现在尝试添加图像。我不想拥有 Matlab。
-
谢谢。希望图片有帮助:)
标签: android graph achartengine