PCA Graph of Data Comes Up Blank

6 ビュー (過去 30 日間)
Mike Zimmers
Mike Zimmers 2021 年 5 月 2 日
コメント済み: Mike Zimmers 2021 年 5 月 2 日
I am running an example code from the Climate Data Toolbox and I am having issues plotting the graph of the principle component of my data. When I run the code, it is resulting in a blank graph. The data is the file attached. The following is my code.
close all
clear all
%% TS
filename = 'data';
S = dir(fullfile(filename,'*.txt'));
for k = 1:numel(S)
fnm = fullfile(filename,S(k).name);
mtx1 = load(fnm);
mtx1 = normalize(mtx1);
mtx = reshape(mtx1,72,144);
TS{k} = mtx;
TS{k}(TS{k} == -1000) = NaN;
TS_cat = cat(3,TS{:});
lat = (-90:2.5:90);
lon = (-180:2.5:180);
[Lon,Lat] = meshgrid(lon,lat);
TS_cat = fillmissing(TS_cat,'linear');
axis xy
cmocean thermal
xlabel 'longitude'
ylabel 'latitude'
[eof_maps,pc,expv] = eof(TS_cat);
% Plot the first mode:
axis xy image
title 'The first EOF mode!'
t = length(pc(1,:));
% subsubplot(3,1,1)
box off
axis tight
ylabel 'pc1'
title 'The first principal components'
How would I fix this?
Thanks in advance.

回答 (1 件)

Chad Greene
Chad Greene 2021 年 5 月 2 日
I think you're mixing and matching different ways of defining filenames. As a result, dir is unable to find the files you're looking for.
When I ran your code, this came up empty:
S = dir(fullfile(filename,'*.txt'));
The easiest solution is to navigate directly to the folder where all of your .txt files are, and do
S = dir('*.txt');
I was able to get around all of this by manually writing the filename in this line:
mtx1 = load('data.txt');
But that of course only loads the single example file you uploaded. As a result, pc only contains one entry, becauese there's only one timestep.
  6 件のコメント
Mike Zimmers
Mike Zimmers 2021 年 5 月 2 日
I changed
TS{k}(TS{k} == -1000) = NaN;
TA{k}(TA{k} <= 0) = NaN;
in the loop and this is the figure that is produced:


Community Treasure Hunt

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

Start Hunting!

Translated by