차량용 채널의 데이터가 포함 된 하위 수준의 1x1 구조체가 포함 된 filedata.mat 파일이 있습니다. 파일에는 30 개의 측정 된 채널이 있습니다. 채널 이름, 채널 단위 및 채널 값 (시간 대비)은 별도의 하위 수준에 저장됩니다.MATLAB : 구조체에서 데이터를 추출하고 사용자 정의 크기 행렬에 배치
난 지정하고자하는 채널 (즉, 어떤 데이터 열) 열 번호에 의해 행 2
코드의 1 행의 채널명 및 채널 단위 완전한 매트릭스 코드 놓고 데이터를 내가 현재 가지고는 다음과 같습니다 :
clear all;
channels = [1 4 8];
source = load('filedata.mat');
N = size(channels,2);
I = size(source.Data.DataOut,1) + 2;
data = zeros(I,N);
for i = (1:1:I)
for n = (1:1:N)
if i == 1
data(i,n) = source.Data.ChannelNames{channels(n)};
elseif i == 2
data(i,n) = source.Data.ChannelUnits{channels(n)};
else
data(i,n) = source.Data.DataOut{i,channels(n)};
end
end
end
내 생각이은 행 1 channelnames을 배치하는 것입니다 (즉, 때 = 1), 행 2 channelunits (때 = 2) 다음의 남아있는 모든 행을 배치합니다 i = I까지의 데이터.
그러나 이것을 실행할 때 코드 "하위 할당 된 치수가 일치하지 않습니다."오류가 발생합니다. 행 14 인 : 사람이 솔루션을 제안 할 수
data(i,n) = source.Data.ChannelNames{channels(n)};
경우 - 아마도 더 중요한 것은 - 필자 (그래서 내가 뭔가를 배울 수 있습니다!) 내가 정말 감사하겠습니다 잘못 됐을 경우에 대해 설명합니다. 사전에
감사합니다.
불쾌은 감사합니다 귀하의 빠른 reponse의 channelnames 및 단위 16 개 데이터 (3에서 ==에서 오류> dataextract을 받고 데이터 메신저로하지만, 지금 노력하고 있습니다 : 나는, :) = 소스 .Data.DataOut (:, channels); % # DataOut이 셀 배열이라고 가정합니다. ??? 셀을 두 배로 변환 할 수 없습니다. – user1230617
코드에서 DataOut은 셀 배열이어야합니다. 분명히 잘못된 가정입니다. DataOut을 셀 배열로 변환하거나 별도의 숫자 변수로 유지할 수 있습니다. 이'data' 변수를 어떻게 사용할 것입니까? – yuk
코드를 수정했지만 필요한 부분입니까? – yuk