Make a plt from a 4-D multi array variable from nc file
現在この質問をフォロー中です
- フォローしているコンテンツ フィードに更新が表示されます。
- コミュニケーション基本設定に応じて電子メールを受け取ることができます。
エラーが発生しました
ページに変更が加えられたため、アクションを完了できません。ページを再度読み込み、更新された状態を確認してください。
古いコメントを表示
I have a nc file with:
Dimensions:
time = 8
depth = 48
latitude = 109
longitude = 25
and make this:
u='global-reanalysis-phy-001-030-daily_1591804259623.nc'
ncdisp(u)
east = ncread(u,'uo');
lat = ncread(u,'latitude');
lon = ncread(u,'longitude');
time=ncread(u, 'time');
depth=ncread(u, 'depth');
dtime = datetime(1950, 1, 1, time, 0, 0);
jd=juliandate(dtime);
plot(lat, east(:,:,15,1));
east is a 4-D 8371200 double
But I want a plot (surfc) in time, this 8 days, latitude, one depth (lets say 48, the last) and the east variable that is a velocity m/s.
Any idea? What I should do with east variable? squeeze, quiver, etc realy dont know or find solution
Thanks.
1 件のコメント
KSSV
2020 年 6 月 17 日
OP commented:
the plot(lat, east(:,:,15,1)) is working but only for one day if I change 1 for : then the error
Data cannot have more than 2 dimensions.
採用された回答
ncfile = "global-reanalysis-phy-001-030-daily_1591804259623.nc";
time = ncread(ncfile,'time') ;
depth = ncread(ncfile,'depth') ;
lat = ncread(ncfile,'latitude') ;
lon = ncread(ncfile,'longitude') ;
u = ncread(ncfile,'uo') ;
% plots
for i = 1:length(time) % time loop
for j = 1:length(depth) % depth loop
z = u(:,:,j,i)' ; % extract the matrix here
pcolor(lon,lat,z) ;
colorbar
shading interp
xlabel('lon')
ylabel('lat')
title(sprintf('time = %d, depth = %d',i,j))
drawnow
end
end
17 件のコメント
Thanks for you answer, I try but this came:
>> surf(lon,lat,east(:,:,1))
Error using surf (line 74)
Data dimensions must agree.
>> pcolor(lon,lat,east(:,:,2))
Error using pcolor (line 59)
Matrix dimensions must agree.
I make the squeeze .
Any idea?
try transposing the matrix..
surf(lon,lat,east(:,:,1)')
If not working share the dimensions of each variable here..
Thanks!
Here is the file
What i want is a plot in 2D
x=time
y=latitude
z=east
at specific depth.
KSSV
2020 年 6 月 17 日
Edited the answer.
ok! I try it runs with out error but the plot is empty.
the z matrix is NaN
KSSV
2020 年 6 月 17 日
All the matrices are not NaN....when depth is increasing....data is having NaN's....see the plot, it is in a loop..it is plotting all the values..
I add this to your answer:
nx = length(lon);
ny = length(lat);
nd=length(depth);
nt=length(time);
that I saw you make in other question and works but is like running the time and depths like animation
but still the cordinates are lat and long
KSSV
2020 年 6 月 17 日
Okay..I got it..you want to plot for specific depth, all the time data...
For this case, you need to fix the range of lat and lon...
ok! yes I understand so how can I make the plot time vs lat with u as 3 variable
ncfile = "global-reanalysis-phy-001-030-daily_1591804259623.nc";
time = ncread(ncfile,'time') ;
depth = ncread(ncfile,'depth') ;
lat = ncread(ncfile,'latitude') ;
lon = ncread(ncfile,'longitude') ;
u = ncread(ncfile,'uo') ;
% plots
for i = 1:length(lon)
ud = squeeze(u(:,i,1,:)) ;
pcolor(lon,time,ud')
shading interp ;
colorbar
title(sprintf("depth = 1, lat rows = %d",i)) ;
drawnow
pause
end
KSSV
2020 年 6 月 17 日
This is called Hovmoller diagrams ..am I right?
ok! thanks I think I can change to axe x time and to y latitude
great!
Yes Hovmoller! I just start with this this week and try with few data now came the big things...
so what is doing: ud = squeeze(u(:,i,1,:))
thanks!
KSSV
2020 年 6 月 17 日
You can try it your self......check the dimensions before and after squeeze.
squeeze : it will remove the unwanted extra dimensions
yes! thanks a lot!
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Graphics Object Properties についてさらに検索
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)

