Extracting specific data for multiple mat files

Hello. I am having around 1800 mat files that are the output of Venlodyne lidar. I have converted all of them to the PCD format as well. So, I want to extract the specific data, which is determined by specific row or column, from those files. Please help me with this question. Thank you so much for your support!

2 Kommentare

Chunru
Chunru am 22 Aug. 2022
Attach some sample data.
Thanh
Thanh am 22 Aug. 2022
Sorry for not adding files. Here are some files for instance.

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Chunru
Chunru am 22 Aug. 2022
fn = dir("save*.mat")
fn = 2×1 struct array with fields:
name folder date bytes isdir datenum
for i = 1:length(fn)
matobj{i} = matfile(fn(i).name)
matobj{i}.PCD % Then you can access to any portion of data and assign the results to a variable
end
matobj = 1×1 cell array
{1×1 matlab.io.MatFile}
ans =
pointCloud with properties: Location: [16×1808×3 double] Count: 28928 XLimits: [-10.5304 19.9285] YLimits: [-5.1332 9.1553] ZLimits: [-2.5690 5.3415] Color: [] Normal: [] Intensity: [16×1808 uint8]
matobj = 1×2 cell array
{1×1 matlab.io.MatFile} {1×1 matlab.io.MatFile}
ans =
pointCloud with properties: Location: [16×1808×3 double] Count: 28928 XLimits: [-10.5543 19.8885] YLimits: [-5.1543 9.2809] ZLimits: [-2.5587 5.3218] Color: [] Normal: [] Intensity: [16×1808 uint8]
Thanh
Thanh am 23 Aug. 2022
Bearbeitet: Thanh am 23 Aug. 2022
Thank you SIr for your answer. I tried to use the code to extract data of all mat files in column 1706 but it pops up another error "Index in position 2 exceeds array bounds. Index must not exceed 1." Can you help me with this error please? You can see my code adjustment here. Thank a lots!
fn = dir("save*.mat")
for i = 1:length(fn)
matobj{i} = matfile(fn(i).name)
dataPCD = matobj{i}.PCD % Then you can access to any portion of data and assign the results to a variable
Data = dataPCD(:,1706)
end

5 Kommentare

What data you want to extract? dataPCD is an object of pointCloud. Which part of the data you want to extract?
pointCloud with properties:
Location: [16×1808×3 double]
Count: 28928
XLimits: [-10.5304 19.9285]
YLimits: [-5.1332 9.1553]
ZLimits: [-2.5690 5.3415]
Color: []
Normal: []
Intensity: [16×1808 uint8]
Thanh
Thanh am 23 Aug. 2022
Bearbeitet: Thanh am 23 Aug. 2022
I want to extract the y-value of column 1706 of Location data. I tried with the following code but the ouput is not as same as in Location data which I manually picked from those files.
fn = dir("save*.mat")
for i = 1:length(fn)
matobj{i} = matfile(fn(i).name)
dataPCD = matobj{i}.PCD % Then you can access to any portion of data and assign the results to a variable
Data(:,i) = dataPCD.Location(:,1706)
end
Chunru
Chunru am 23 Aug. 2022
The location data has the following 3D format:
Location: [16×1808×3 double]
Which slice of data you want to extract? You might want to specify 3 indeces instead of 2.
Thanh
Thanh am 24 Aug. 2022
Thank you Sir so much! I have extracted the data
Chunru
Chunru am 24 Aug. 2022
Glad to know that.

Melden Sie sich an, um zu kommentieren.

Kategorien

Produkte

Version

R2022a

Gefragt:

am 22 Aug. 2022

Kommentiert:

am 24 Aug. 2022

Community Treasure Hunt

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

Start Hunting!

Translated by