how can i combine 3 dimensional data and use pca function?

2 ビュー (過去 30 日間)
성낙 홍
성낙 홍 2023 年 6 月 27 日
コメント済み: 성낙 홍 2023 年 6 月 27 日
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.

回答 (1 件)

Mrinal Anand
Mrinal Anand 2023 年 6 月 27 日
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.
  1 件のコメント
성낙 홍
성낙 홍 2023 年 6 月 27 日
Thanks for your answer, your answer helped me to solve the problem.
Range of longitudes in m_proj was not problem,
but the prslon didn't matched with the m_proj range.
So I changed the prslon range.
Thanks again.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeDimensionality Reduction and Feature Extraction についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by