How to open .cdf file
11 次查看(过去 30 天)
显示 更早的评论
Hai Everyone,
Anyone can help me how to open the .cdf file as attacheed.
The .cdf file is their header file. Attached.
I tried this code but failed.
**I also attached the function imshow3D
clc
clear all
close all
sz = [128 128 128];
fname = 'jaszaki13110n1date14012024531193.cdf';
fid = fopen(fname);
data = fread(fid,'*uint16'); % assuming uint
fclose(fid);
% this is blindly devectorized
% may still be transposed, but i can't tell due to symmetry
% note that data is unit-scale single-precision float
data = reshape(data,sz);
imshow3D(data);
Error using reshape
Number of elements must not change. Use [] as one of the size inputs to automatically calculate the appropriate size for that
dimension.
1 个评论
Dyuman Joshi
2024-1-19
cdfread would be a better option here.
However, the file you have attached seems to be corrupt - as can be seen from the output of fopen() and the error from cdread()
arr = unzip('New folder (3).zip')
fname = 'jaszaki13110n1date14012024531193.cdf';
fid = fopen(fname)
cdfread(fname)
采纳的回答
Voss
2024-1-19
移动:Voss
2024-1-19
sz = [128 128 128];
unzip('New folder (3).zip')
ls
addpath('New folder (3)') % to run imshow3D.m
The size of the cdf file (16777216 bytes) is consistent with the file containing 128*128*128 64-bit elements.
F = dir(fullfile('New folder (3)','*.cdf'))
F(1).bytes/8 == prod(sz)
Whether those are uint64s or doubles, I don't know, but I'd guess doubles based on what imshow3D shows.
fid = fopen(fullfile(F(1).folder,F(1).name));
data = fread(fid,'*uint64');
fclose(fid);
data = reshape(data,sz);
figure
imshow3D(data);
fid = fopen(fullfile(F(1).folder,F(1).name));
data = fread(fid,'double');
fclose(fid);
data = reshape(data,sz);
figure
imshow3D(data);
Does that look like what's expected?
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Convert Image Type 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!