으로 가져 오기 일부 분석을 위해 Matlab 파일을 R로 가져 오려고합니다. MATLAB 파일은 확률 값의 3D 위치 배열입니다. 즉, z (x, y) 행렬은 z의 "조각"을 가로 지릅니다. 내가하고 싶은 것은 이것을 "위치"와보고 된 확률 값을 가진 R 파일로 변환하는 것입니다. 그래서 출력으로 아래의 라인을 따라 뭔가 : 나는 R.matlab 패키지를 사용하면Matlab에서 3D 배열을 R
Prob x y z
0.17 1 1 1
0.28 1 1 2
0.35 2 1 1
0.40 2 1 2
0.16 1 2 1
0.27 1 2 2
0.34 2 2 1
0.80 2 2 2
내가 데이터를 가져올 수 있고, 잘 가져가 나타납니다,하지만 난 얻을 수가 없습니다 " 치수 "또는 다른 행렬로 나눕니다 ... 또는 실제로 유용한 것은 없지만 행 * 열 * 조각의 길이 인 값의 긴"목록 "으로 나타나게하십시오. 다음은
몇 가지 예제 코드입니다 :matlab에 코드
x = rand(3,4,2)
save file.mat x
R 코드
> str(Tdata)
List of 1
$ x: num [1:3, 1:4, 1:2] 0.026 0.330 0.222 0.631 0.567 ...
- attr(*, "header")=List of 3
..$ description: chr "MATLAB 5.0 MAT-file, Platform: GLNXA64, Created on: Mon Dec 5 17:45:33 2016 "
..$ version : chr "5"
..$ endian : chr "little"
> length(Tdata$x)
[1] 24
를 출력
Tdata <- readMat("file.mat")
head(Tdata)
str(Tdata)
length(Tdata$x)
는 그래서 TDATA는 하나의 요소임을 보여줍니다 목록을 포함하는 배열이 3 차원이고 각 차원이 정확하고 올바른 총 개수를 가지지 만 이러한 목록 중 하나를 분리하거나 length() 또는 dim() 함수를 사용하여 차원을 식별하는 것처럼 보이지 않습니다. 원래, 나는 아래처럼 뭔가를 사용하려고 생각했지만 작동하지 않는 치수를 얻을 수 없기 때문에.
ndim <- dim(Tdata)
x_coord <- c(1:ndim[1])
y_coord <- c(1:ndim[2])
z_coord <- c(1:ndim[3])
new_df <- expand.grid(x_coord,y_coord,z_coord)
new_df <- cbind(new_df,Tdata$x)
아무 도움이됩니다.
Octave를 중개자로 사용하는 경우,'foreign :: read.octave'는 배열에서 직접 읽을 수 있습니다. – alistaire
그래서 read.octave ("file.mat")로 .mat 파일을 읽으려고했는데이 오류가 발생했습니다 : 스위치 (type, matrix = read_octave_matrix (con), scalar = read_octave_scalar (con) EXPR은 길이 1 벡터 여야합니다 그럼 <- readMat ("file.mat") 데이터로 파일을 읽은 다음 read.octave (data)로 "data"를 읽으려고했습니다. 그런 다음 "data "배열을 읽고, read.octave로 읽는 것. 아무도 내가 잘못하고있는 것일까 요? – Nathan
좋은 점, 그것을 반영하기 위해 텍스트를 업데이트 할 것입니다. 고마워요. – Nathan