% ncdump -c /work/projects/G09/SEACLID/MCA/C_matrx.nc % netcdf C_matrx { % dimensions: % x = 9882 ; % y = 11627 ; % variables: % float x(x) ; % x:long_name = "Longitude" ; % x:units = "degree_east" ; % float y(y) ; % y:long_name = "Latitude" ; % y:units = "degree_north" ; % float cor(y, x) ; % cor:long_name = "Covariance Matrix" ; % cor:units = "-" ; % cor:missing_value = -99.f ; % Trong đó x là số hàng, y là số cột ma trận % Ký hiệu ma trận là C(x,y) % Em viết một đoạn để tính C(x,y) = U(x,y) x W(y,y) x V(y,y) % Thực ra trong KQ chỉ có U(x,y), W(y) và V(y,y) % Sau khi tính xong em ghi ra file NC của ba mảng U, W và V % Sau khi viết CT Matlab, em viết một script chạy bằng shell % Goi thuc hien CT Matlab clearvars close all; datadir = '/home/data/'; outdir = '/home/data2/'; fin = [datadir,'input_file.nc']; % join path with file name fout = [outdir,'ouput_file.nc']; mis_val = -99.99; % missing value (change this if you want) %% Read data lon = ncread(fin,'x'); lat = ncread(fin,'y'); U = ncread(fin,'U'); W = ncread(fin,'W'); V = ncread(fin,'V'); % turn missing value to NaN (matlab works on NaN). U(U == mis_val) = nan; W(W == mis_val) = nan; V(V == mis_val) = nan; %% calculate C(x,y); C = U*W*V; % turn back NaN to mis_val C(isnan(C)) = mis_val; %% write results to nc file delete(fout); % delete if exist and create a new file. (avoid mistake if file exist on previous test) dim_name = {'x','y'}; dim_standard_name = {'longitude','latitude'}; dim_long_name = dim_standard_name; dim_units = {'degree_east','degree_north'}; dim_axe_type = {'Lon','Lat'}; dim_size = {size(x),size(y); dim_values = {lon,lat}; var_name = {'cor'}; var_datype = {'single'}; var_standard_name = {'Covariance Matrix'}; var_long_name = var_standard_name; var_dim_name = {{'x','y'}}; var_dim_size = {size(C)}; var_units = {'-'}; var_miss_val = {mis_val}; var_values = {C}; for d = 1:length(dim_name) ncwrite_dim(fname,dim_name{d},dim_size(d),dim_standard_name{d},... dim_long_name{d},dim_units{d},dim_axe_type{d},dim_values{d}); end for i = 1:length(var_name) ncwrite_var(fname,var_name{i},var_datype{i},var_dim_name{i},var_dim_size{i},var_values{i},... var_standard_name{i},var_long_name{i},var_units{i},var_miss_val{i}); end