How to open .cdf file

11 vues (au cours des 30 derniers jours)
mohd akmal masud
mohd akmal masud le 19 Jan 2024
Commenté : Voss le 20 Jan 2024
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 commentaire
Dyuman Joshi
Dyuman Joshi le 19 Jan 2024
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')
arr = 1×4 cell array
{'New folder (3)/desktop.ini'} {'New folder (3)/imshow3D.m'} {'New folder (3)/jaszaki1318n1date15012024…'} {'New folder (3)/jaszaki1318n1date15012024…'}
fname = 'jaszaki13110n1date14012024531193.cdf';
fid = fopen(fname)
fid = -1
cdfread(fname)
Error using cdfread
Unable to open file. File might be corrupt or filename might have unsupported characters.

Connectez-vous pour commenter.

Réponse acceptée

Voss
Voss le 19 Jan 2024
Déplacé(e) : Voss le 19 Jan 2024
sz = [128 128 128];
unzip('New folder (3).zip')
ls
'New folder (3)' 'New folder (3).zip'
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 = struct with fields:
name: 'jaszaki1318n1date15012024.cdf' folder: '/users/mss.system.nXJGBc/New folder (3)' date: '16-Jan-2024 03:34:26' bytes: 16777216 isdir: 0 datenum: 7.3927e+05
F(1).bytes/8 == prod(sz)
ans = logical
1
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?
  2 commentaires
mohd akmal masud
mohd akmal masud le 20 Jan 2024
Dear @Voss
Thank you very much, this is what I need.
Voss
Voss le 20 Jan 2024
You're welcome!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Convert Image Type dans Help Center et File Exchange

Produits


Version

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by