1
배열이 들어있는 Matlab 구조체가 있습니다. 구체적으로는 다음과 같이 할당 :배열 구조체/배열을 Matlab의 단일 배열로 변환
info(27).field1 = [];
info(27).field2 = [];
info(27).field3 = [];
그것은 루프
% here simplified for your convenience
for i = 1:27
info(i).field1 = rand(1,4);
info(i).field2 = rand(1,4);
info(i).field3 = rand(1,4);
그리고 (내 값) 작성시로 채워져은 다음과 같습니다
[1048576;0;0;0] [1;0;0;0] [1;0;0;0]
[1047512;0;1064;0] [0,99;0;0,01;0] [1;0;8;0]
[1047900;0;676;0] [0,94;0;0,07;0] [2;0;3;0]
...
내가이되고 싶어 열이 하나 인 배열 파일을 테이블 파일로 저장할 수있는 단일 (27x12) 테이블
writetable(T,'myData.csv', ...')
다소 (테이블 제목은 다음과 같을 수 있습니다.) 무시 :
1.A 1.B 1.C 1.D 2.A 2.B 2.C 2.D 3.A 3.B 3.C 3.D
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
1048576 0 0 0 1,00 0 0 0 1 0 0 0
1047512 0 1064 0 0,99 0 0,01 0 1 0 8 0
1047900 0 676 0 0,94 0 0,07 0 2 0 3 0
또는 더 나은을
1.A 1.B 1.C 1.D 2.A 2.B 2.C 2.D 3.A 3.B 3.C 3.D
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
1048576 0 0 0 100% 0% 0% 0% 1 0 0 0
1047512 0 1064 0 99% 0% 1% 0% 1 0 8 0
1047900 0 676 0 94% 0% 7% 0% 2 0 3 0
지금까지 시도입니다했습니다 무엇 :
T = table(info) %obviously doesn't work
info
_____________
[1x27 struct]
그리고 셀 어레이
% create a cell array and try to concatenate the arrays in the array
C = struct2cell(info)
Cp = permute(C,[3 1 2]);
Cpx = horzcat(Cp(:,1),Cp(:,2),Cp(:,3));
T = table(Cpx)
T =
Cpx
________________________________________
[4x1 double] [4x1 double] [4x1 double]
[4x1 double] [4x1 double] [4x1 double]
[4x1 double] [4x1 double] [4x1 double]
...
와 해결 방법 나는 horzcat이 효과가있을 것이라고 생각했지만, 어쨌든 나는 할 수있다. 왜 내 머리가 감싸지 않는지. 이것에 대한 해결책을 가진 누군가?
이 답변 주셔서 감사합니다! 몇 가지 변종에서 이것을 시도했지만 조금 자세하게 붙어 있습니다 : – Honeybear
@Honeybear 여러분의 의견이 잘린 것처럼 보입니다. 세부 사항은 무엇입니까? – Suever
구조체에 포함 된 벡터는 세로 (4x1)이므로 'cell2mat (Cp)'는 값을 세로로 쌓았습니다 (27x3 구조체는 108x3 매트릭스가되었습니다). 이 문제를 해결하기 위해 struct에 포함 된 벡터 (예 :'[1; 0; 0; 0]')를'1 0 0 0 '과'v = v'로 변경했습니다. 루프없이 어떻게 할 것인가). 그런 다음 효과가있었습니다 (27x12 테이블). 고마워. P .: 미안, 실수로 회신을하려고하는 입력과 함께 의견을 보내십시오.) – Honeybear