reading a binary file into matlab
Afficher commentaires plus anciens
I am ruining the following to codes
filelist = dir('E:\4_models\model1');
nt = size(filelist,1);
nx = 508;
ny = 637;
dx = 50;
dy = 50;
zdata = zeros(ny,nx,nt);
for i = nt
fname = filelist(i).name;
a = readcartesiangrid(fname);
contourf(a.x, a.y, a.z, 31);
colorbar
daspect([1 1 1]);
pause(0.1)
z = a.z;
zdata(:,:,i) = z;
end
for i = 2:nt
z1 = zdata(:,:,1);
zi = zdata(:,:,i);
zd = zi - z1;
imagesc(zd);
colorbar
set(gca,'Ydir','normal')
caxis([0 35]);
axis('equal')
pause(0.2)
end
function [ grid ] = readcartesiangrid(fname, nx, ny, dx, dy )
fid = fopen('fname');
version = fread(fid, 1, 'uint32');
assert(version == 2, sprintf('Invalid file version: expected 2, got %i', version));
fclose(fid);
when I execute these two codes, I am getting the following error;
Invalid file identifier. Use fopen to generate a valid file identifier
Error in readcartesiangrid (line 17)
version = fread(fid, 1, 'uint32');
Réponse acceptée
Plus de réponses (1)
I think there're other issues despite fixing fid = fopen(fname)
filelist = dir('E:\4_models\model1');
filelist = filelist(~[filelist.isdir]); %You have a /. and /.. folder that needs to be skipped
nt = size(filelist,1); %this gives you 1 number.
...
for i = nt %this will only do the last file. Do you want " for i = 1:nt " instead?
fname = filelist(i).name; %this gives you only the file name, without the file path (ex: model2.mat)
fname = fullfile(filelist(i).folder, filelist(i).name); %this gives you the full file path (ex: E:\4_models\model1\model2.mat)
...
end
In your readcartesiangrid, recommend the following changes:
fid = fopen(fname);
assert(fid ~= -1, 'Error opening the file "%s".', fname) %Add check here to help with debugging
1 commentaire
Abdul Wahab
le 22 Mai 2018
Catégories
En savoir plus sur Data Import and Export dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!