다음은 각 트랙에 대한 정보가 들어있는 구조에서 원하는 데이터를 가져 오는 데 도움이되는 약간의 코드입니다.
내 샘플 코드에서 시간, X 및 Y 좌표에 대한 더미 값을 생성 한 다음 셀 배열에 넣습니다. 셀 배열에는 궁극적으로 지정한 형식의 데이터가 각 시점에 포함되어 있습니다.
트랙에 대한 정보가 X_Coord 및 Y_Coord라는 필드가있는 DataStruct라는 구조에 저장되어 있다고 가정합니다. 귀하의 경우,이 정보는 매트릭스에 있으므로 색인 생성이 구조에서 수행되는 방식이 달라집니다. 주석에서 말했듯이, 행렬의 크기는 1x8 (TimePoints)이므로, 예를 들어 변형 된 요소를 사용하여 더 쉽게 요소의 요소에 액세스 할 수 있어야합니다.
clc;
clear all;
% Generate dummy values
for t = 1:10
DataStruct(t).X_Coord = t;
DataStruct(t).Y_Coord = 10*t+1;
end
Data_Cell = cell(length(DataStruct),3); % Pre-allocation
% Fetch each field of interest and put into cell array, along with the
% time.
for k = 1:length(DataStruct)
Data_Cell(k,:) = {(k) (DataStruct(k).X_Coord) (DataStruct(k).Y_Coord)};
end
Data_Cell
이 다음 셀 어레이 결과 :
Data_Cell =
[ 1] [ 1] [ 11]
[ 2] [ 2] [ 21]
[ 3] [ 3] [ 31]
[ 4] [ 4] [ 41]
[ 5] [ 5] [ 51]
[ 6] [ 6] [ 61]
[ 7] [ 7] [ 71]
[ 8] [ 8] [ 81]
[ 9] [ 9] [ 91]
[10] [10] [101]
그런 다음 cell2mat
를 사용하여 두 배의 배열로 변환 할 수 있습니다; 희망을 시작하는 데 도움이됩니다!
편집 :
DummyArray = zeros(10,3);
% Generate dummy array with numbers and NaNs.
DummyArray(:,1) = 1:10;
DummyArray(:,2) = [1 2 NaN NaN 5 6 7 8 NaN NaN];
DummyArray(:,3) = [NaN 21 NaN 41 51 NaN 71 81 91 NaN];
: 아래 의견에 따라, 여기가 NaN 광고 모두 x와 y 좌표가 해당 시간과 함께 새로운 매트릭스에 저장 식별 할 수있는 것입니다 이 더미 행렬 제공
:
,223,525 :
DummyArray =
1 1 NaN
2 2 21
3 NaN NaN
4 NaN 41
5 5 51
6 6 NaN
7 7 71
8 8 81
9 NaN 91
10 NaN NaN
%Find row indices in which both x and y coordinates are actual numbers
NotNaN = DummyArray(~isnan(DummyArray(:,2)) & ~isnan(DummyArray(:,3)));
%Use logical indexing to retrieve the corresponding time, x- and y
%coordinates all in the same matrix.
FinalMatrix = [DummyArray(NotNaN,1) DummyArray(NotNaN,2) DummyArray(NotNaN,3)]
출력은 다음과 같다
그리고 거기 가세요!
x 좌표, y 좌표 등이 포함 된 행렬에 대해 좀 더 구체적으로 설명 할 수 있습니까? 예를 들어 그 크기는 얼마입니까? –
1x (8t) double입니다. 여기서 t는 트랙의 길이입니다. 예를 들어, 20 개의 시간 지점을 가진 트랙은 1x160 배의 결과를 가져옵니다. – mtmtmt
귀하의 예제는 셀 배열이 아니므로 셀 배열이 필요합니까, 아니면 두 배 배열에 만족하십니까? –