How to read grid file GOT4.7 format ocean tide model?

조회 수: 1 (최근 30일)
hanif hamden
hanif hamden 2020년 7월 4일
Hi everyone,
I've tried to modify and got confused on the script that has given to me in order to read another format of grid file.
Can anyone help me to solve this matter? Attached here is an example of grid file to be read.
And also this is the script that had been given. I tried to modify and get confused on it.
clc;clear all; close all;
filename = 'k1.txt';
file ='K1GOT.txt';
fid = fopen(filename);
L = cell(5,1);
for K = 1 : 7; L{K} = fgetl(fid); end
longrange = sscanf(L{5}, '%f');
latrange = sscanf(L{4}, '%f');
widths = sscanf(L{3}, '%f');
indicates_missing = sscanf(L{6}, '%f');
%undefined = sscanf(L{7}, '%f');
per_line = 11;
partwidth = widths(1);
nparts = widths(2);
parts = cell(nparts,1);
colgroups = floor(partwidth / per_line);
leftover = partwidth - colgroups * per_line;
failed = false;
for P = 1 : nparts
data1 = fscanf(fid, '%f', [per_line colgroups]);
if isempty(data1); failed = true; break; end
data1 = reshape(data1, [per_line colgroups]);
data2 = fscanf(fid, '%f', [leftover]);
data = [reshape(permute(data1, [1 3 2]), [], 2); data2];
parts{P} = data;
end
if failed
fprintf('Only got %d of %d parts successfully\n', P, npars);
end
if ~failed
L = fgetl(fid);
if ischar(L) && ~isempty(L)
fprintf('Not empty at apparent EOF, content is:\n%s\n', L);
failed = true;
end
end
if ~failed
lats = linspace(latrange(1), latrange(2), widths(2));
longs = linspace(longrange(1), longrange(2), widths(1));
data = permute(cat(3, parts{:}),[1 3 2]);
amps = data(:,:,1) .';
amps(amps == indicates_missing(1)) = nan;
phases = data(:,:,2) .';
phases(phases == indicates_missing(2)) = nan;
subplot(2,1,1);
[xq,yq] = meshgrid(0:.25:360, -90:.25:90);
surf(xq,yq,amps, 'edgecolor', 'none');
xlim(longrange);
ylim(latrange);
xlabel('long'); ylabel('lat'); zlabel('amp');
title('amplitudes');
subplot(2,1,2);
[xq,yq] = meshgrid(0:.25:360, -90:.25:90);
surf(xq,yq,phases,'edgecolor', 'none')
xlim(longrange);
ylim(latrange);
xlabel('long'); ylabel('lat'); zlabel('phase');
title('phases');
end
Model = [yq(:) xq(:) amps(:) phases(:)];
fid1 = fopen(file, 'wt');
fprintf(fid1,'%.4f \t %.4f \t %.3f \t %.3f\n',Model.');
fclose(fid1);
fclose(fid);
I shall be most grateful if anyone can solve my problem. Thank you.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Oceanography and Hydrology에 대해 자세히 알아보기

제품


릴리스

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by