情報を 3D で表示したい。ファイルから値を 1 行ずつ読み取り、これらの値をリストに保存しています。
point<-10
spalte<-500
for(i in 1:point)
{
line<-readLines(con,n=1,warn=FALSE)
m<-list(as.integer(unlist(strsplit(line,split=","))))
datalist<-c(datalist,sapply(m,"[[",spalte))
}
point
読み取る必要がある値の数を示し、読み取るSpalte
列を示します。私のファイルには 10000 行と 7500 列があります。
次に、各値の振幅を計算します。
fft_amplitude <- function(x) {sqrt((Re(fft(x)))^2+(Im(fft(x)))^2)}
df<-matrix(unlist(datalist,use.names=FALSE),ncol=1,byrow=TRUE)
r<-apply(df,2,FUN=fft_amplitude)
この状況では、2D ダイアグラムを使用できます。
plot(r[1:(point/2)],pch=20,ylim=c(0,20000),xlim=c(0,point),cex=0.9,ylab="amplitude",xlab="Frequenz")
しかし、この情報を 3 次元 (時間、周波数、振幅) で表示したいと考えています。以下を使用して 3D ダイアグラムを作成します。
x<-1:length(datalist)
y<-1:length(datalist)
z<-matrix(unlist(datalist,use.names=FALSE),ncol=length(datalist),nrow=length(datalist),byrow=TRUE)
z<-apply(z,2,FUN=fft_amplitude)
persp(x,y,z,theta = 30, phi = 40, expand = 0.5, col = "lightblue")
このコードは 3 次元の図を表示しますが、結果は 2 次元の図とは異なります。データを 3D で表示するにはどうすればよいですか?
アップデート
私の問題をもっと簡単に説明する必要があると思います:
3Dダイアグラムが欲しいです。私の情報は次のとおりです。
- x:Time ----- 1:n (整数)
- Y:頻度 --- x のように 1:n になる可能性があります
z: z の値は関数から得られます:
fft_amplitude <- function(x) {sqrt((Re(fft(x)))^2+(Im(fft(x)))^2)}
この関数の入力値は、CSV ファイルから読み取る必要があります。persp
この情報を使用し て 3D ダイアグラムを描画するにはどうすればよいですか?