how can i combine 3 dimensional data and use pca function?
2 views (last 30 days)
Show older comments
HI, I want to combine two pressure data which have longitude 160 ~ 180 & -180 ~ -150.( latitude is same.)
I wanted to use pca function with this data, and plot with m_map.
% pressure
prs1prs1 = ncread('prs1.nc','sp');
prs2 = ncread('prs2.nc','sp');
prs2(1,:,:)=[];
prs=cat(1,prs1,prs2);
[a,b,c] = size(prs);
X = reshape(prs,a*b,c)';
X = X-ones(c,a*b).*repmat(mean(X,1),c,1);
X(isnan(X))=0;
% pca
[coeff,score,latent,tsquared,explained] = pca(X);
recoeff = reshape(coeff,[201,121,351]);
% time
day1 = datetime(1979,01,01);
day2 = datetime(2022,12,31);
time = day1:calmonths(1):day2;
time=datenum(time);
%lon
prs1lon = ncread('prs1.nc','longitude');
prs1lon = double(prs1lon);
prs2lon = ncread('prs2.nc','longitude');
prs2lon = double(prs2lon);
prs2lon(1,:)=[];
prslon=[prs1lon;prs2lon];
%lat
prslat = ncread('prs1.nc','latitude');
prslat = double(prslat);
% m_map
m_proj('lambert','lon',[160 210],'lat',[50 80])
m_pcolor(prslon,prslat,recoeff(:,:,1)');
colormap(jet);
shading flat
hold on
h=m_coast('patch','w')
m_grid('box','on','out');
hold on
I tried like this, but the figure does not show whole range.
How can I solve this??
Thank you.
0 Comments
Answers (1)
Mrinal Anand
on 27 Jun 2023
You can try changing the range of longitudes in the m_proj function to include a longer range of longitudinal values:
m_proj('lambert', 'lon', [160 -150], 'lat', [50 80])
You can probably adjust the longitudinal range to get the desired figure that you want.
See Also
Categories
Find more on Dimensionality Reduction and Feature Extraction in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!