Data Parsing

조회 수: 34 (최근 30일)
Robbie
Robbie 2012년 2월 24일
답변: Sushranth 2021년 6월 24일
I have some data in the following format:
0.100000000000000 0.750000000000000 0.229230000000000
0.200000000000000 0.750000000000000 0.249220000000000
0.200000000000000 0.760000000000000 0.257400000000000
0.200000000000000 0.770000000000000 0.266600000000000
0.200000000000000 0.780000000000000 0.277160000000000
0.200000000000000 0.790000000000000 0.289840000000000
0.200000000000000 0.800000000000000 0.307550000000000
0.400000000000000 0.750000000000000 0.289260000000000
0.400000000000000 0.760000000000000 0.299330000000000
0.400000000000000 0.770000000000000 0.310670000000000
0.400000000000000 0.780000000000000 0.325160000000000
0.400000000000000 0.790000000000000 0.339120000000000
0.400000000000000 0.800000000000000 0.356690000000000
0.600000000000000 0.740000000000000 0.319580000000000
0.600000000000000 0.750000000000000 0.329360000000000
0.600000000000000 0.760000000000000 0.341200000000000
0.600000000000000 0.770000000000000 0.355150000000000
0.600000000000000 0.780000000000000 0.370290000000000
0.600000000000000 0.790000000000000 0.389880000000000
0.600000000000000 0.800000000000000 0.409590000000000
0.800000000000000 0.740000000000000 0.358500000000000
0.800000000000000 0.750000000000000 0.370750000000000
0.800000000000000 0.760000000000000 0.384590000000000
0.800000000000000 0.770000000000000 0.400020000000000
0.800000000000000 0.780000000000000 0.420100000000000
0.800000000000000 0.790000000000000 0.433160000000000
0.800000000000000 0.800000000000000 0.456660000000000
What I want to be able to do is split this data in a 'row-wise' sense by putting it into a struct. There are multiple occurences of values in the first column and I want to extract them and the other data associated with those in the other columns. For example I want:
Output.'0.1' Output.'0.2' etc....
In Output.'0.2' then for example I would get the following data:
0.200000000000000 0.750000000000000 0.249220000000000
0.200000000000000 0.760000000000000 0.257400000000000
0.200000000000000 0.770000000000000 0.266600000000000
0.200000000000000 0.780000000000000 0.277160000000000
0.200000000000000 0.790000000000000 0.289840000000000
0.200000000000000 0.800000000000000 0.307550000000000
Any suggestions are greatly appreciated.
Thanks

답변 (1개)

Sushranth
Sushranth 2021년 6월 24일
It is my understanding that you want to establish a key - value relationship in your dataset where the first column corresponds to the keys. A Map container might be better suited for your use case than a struct.
I will assume that the dataset is stored as a matrix.
%Let t be a matrix that contains the data.
keys = unique(t(:,1)); %Extract unique values from the first column
values = {};
for k=1:length(keys) %Iterate over all the keys
key = keys(k);
row_idx = (t(:,1) == key); %Find the row index in the data that corresponds to the key.
values{k} = t(row_idx,:); % Extract those rows from the data and add it to the values cell array.
end
M = containers.Map(keys,values); % Use the keys and values to create a Map
For more details on the Map container, refer to the below documentation :-

카테고리

Help CenterFile Exchange에서 Structures에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by