Effacer les filtres
Effacer les filtres

How to open .cdf file

6 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
clear all
close all
sz = [128 128 128];
fname = 'jaszaki13110n1date14012024531193.cdf';
fid = fopen(fname);
data = fread(fid,'*uint16'); % assuming uint
% 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);
Error using reshape
Number of elements must not change. Use [] as one of the size inputs to automatically calculate the appropriate size for that
  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
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 le 19 Jan 2024
Déplacé(e) : Voss le 19 Jan 2024
sz = [128 128 128];
unzip('New folder (3).zip')
'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
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');
data = reshape(data,sz);
fid = fopen(fullfile(F(1).folder,F(1).name));
data = fread(fid,'double');
data = reshape(data,sz);
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 le 20 Jan 2024
You're welcome!

Connectez-vous pour commenter.

Plus de réponses (0)




Community Treasure Hunt

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

Start Hunting!

Translated by