可以用内置的graphic包来画,就是plot()和curve()
也可以用ggplot2来画,后者更灵活。
graphic
# 先生成一组随机数x <- rnorm(2000)
# 画频率直方图, 分30个bin
hist(x, freq = F, breaks = 30)
# 再画概率分布曲线
lines(density(x, bw=.5), col="red", lwd=2)
2. ggplot2
# 准备工作, 把x设成一个数据集library(ggplot2)
data <- data.frame(x = x)
# 生成底层和直方图,概率线的图层
p <- ggplot(data, aes(x = x, y = ..density..))
p <- p + geom_histogram(fill = "navy")
p <- p + geom_density(colour = "green")
p
画出来风格不太一样,看你口味了
在matlab中应用fft求傅立叶变换后,如果想画出频谱图,必须用fftshift命令处理变换的结果。
例子如下:
clear
clc
t=0:0.001:2
n=2001
Fs=1000
Fc=200
x=cos(2*pi*Fc*t)
y1=fft(x)
y2=fftshift(y1)
f=(0:2000)*Fs/n-Fs/2
hold on
plot(f,abs(y1),'r')
plot(f,abs(y2),'b')
结果如下图:
图中红色是没经过fftshift处理的频谱图,蓝色是经过处理之后的。结合程序,显然x的频谱应该位于200Hz处,经过fftshift处理的蓝色频谱是正确的。
注意:红色和蓝色的曲线在两边分别关于-250Hz和250Hz对称,这并不是偶然。