我的數據是一個名爲PM25的1x7單元。在每個單元格內,還有另一個大小爲365x5xN的單元格,其中N變化。下面是PM25 {1,1}的一部分(該數據可以在這裏找到:https://www.dropbox.com/sh/li3hh1nvt11vok5/4YGfwStQlo變量的問題是PM25)基於具有NaN的列對單元格陣列進行排序
'42.493056' '-92.343889' '19-013-0008' [733043] [ NaN]
'42.493056' '-92.343889' '19-013-0008' [733044] [ NaN]
'42.493056' '-92.343889' '19-013-0008' [733045] '3.6'
'42.493056' '-92.343889' '19-013-0008' [733046] [ NaN]
'42.493056' '-92.343889' '19-013-0008' [733047] [ NaN]
'42.493056' '-92.343889' '19-013-0008' [733048] '10'
'42.493056' '-92.343889' '19-013-0008' [733049] [ NaN]
'42.493056' '-92.343889' '19-013-0008' [733050] [ NaN]
'42.493056' '-92.343889' '19-013-0008' [733051] '5.8'
'42.493056' '-92.343889' '19-013-0008' [733052] [ NaN]
'42.493056' '-92.343889' '19-013-0008' [733053] [ NaN]
'42.493056' '-92.343889' '19-013-0008' [733054] '7.7'
我試圖通過最後一列,濃度整個小區進行排序。這是我一直在做的事情:
% Sort each site based on the concentration values - Descending order with NaN's at the bottom
for i = 1:length(names_PM25_O3) % States
for j = 1:length(PM25{i}(1,1,:)) % Number of sites
[~,ix] = sort(str2double(PM25{i}(:,5,j))); % Sorted indices
nanmask = isnan(str2double(PM25{i}(ix,5,j))); % Get mask (0 or 1) of nan-rows to be ignored
ix = flipdim(ix(~nanmask),1); % Get non-nan indices in reverse order
PM25_sorted{i} = PM25{i}(ix,:,:); % Sort
end
end
事情是,這段代碼只排序PM25中7個單元中每個單元的最後N個。所有其他N根據最後的N進行排序,並且我最終得到小於365的值,這可能是因爲NaN在最後的N中被刪除。例如,這裏將是N = 1(PM25)的一部分{1,1}(:,:,1))
'42.493056' '-92.343889' '19-013-0008' [733396] '63'
'42.493056' '-92.343889' '19-013-0008' [733393] '37.5'
'42.493056' '-92.343889' '19-013-0008' [733108] '28.7'
'42.493056' '-92.343889' '19-013-0008' [733207] '23.1'
'42.493056' '-92.343889' '19-013-0008' [733366] '27.7'
'42.493056' '-92.343889' '19-013-0008' [733255] '19.2'
'42.493056' '-92.343889' '19-013-0008' [733063] '24.7'
'42.493056' '-92.343889' '19-013-0008' [733225] '11.7'
'42.493056' '-92.343889' '19-013-0008' [733066] '19.9'
'42.493056' '-92.343889' '19-013-0008' [733250] [ NaN]
'42.493056' '-92.343889' '19-013-0008' [733387] '26.5'
'42.493056' '-92.343889' '19-013-0008' [733153] '15.6'
'42.493056' '-92.343889' '19-013-0008' [733384] '12.9'
雖然這將是最後N的一部分,N = 21 PM25 {1,1}(:,:,21)
'42.695391' '-93.655976' '19-197-0004' [733396] '48'
'42.695391' '-93.655976' '19-197-0004' [733393] '36.4'
'42.695391' '-93.655976' '19-197-0004' [733108] '33.3'
'42.695391' '-93.655976' '19-197-0004' [733207] '25.4'
'42.695391' '-93.655976' '19-197-0004' [733366] '24.3'
'42.695391' '-93.655976' '19-197-0004' [733255] '22.4'
'42.695391' '-93.655976' '19-197-0004' [733063] '21'
'42.695391' '-93.655976' '19-197-0004' [733225] '20'
'42.695391' '-93.655976' '19-197-0004' [733066] '19.8'
'42.695391' '-93.655976' '19-197-0004' [733250] '19.6'
'42.695391' '-93.655976' '19-197-0004' [733387] '19.5'
'42.695391' '-93.655976' '19-197-0004' [733153] '19.2'
'42.695391' '-93.655976' '19-197-0004' [733384] '18.8'
正如你所看到的,N = 21按降序排列,所有的NaN都消失了。但N = 1只是N = 21的順序(查看第4列,日期 - 順序相同),所以它不按降序排序。
我怎樣才能得到它,因此整個細胞分別排序?否則,我可能不得不保留NaN行,每個N將是不同的長度。目前,它看起來像他們正在從排序N.刪除
排序的。輸出是我想要的,但我擁有的單元陣列不僅僅是我粘貼的示例。這是幾層深。你可以在我發佈的鏈接中看到它。 – shizishan
@shizishan嘗試編輯。 – Divakar
@shizishan在數字之後你想要'NaNs'嗎? – Divakar