Как отобразить даты из столбца отдельно? - PullRequest
1 голос
/ 25 марта 2020

У меня есть набор данных, такой что столбец 1 показывает дату (в форме серийного номера MATLAB), а столбец 2 показывает количество осадков, как показано ниже:

x = [ 22029   81 
      23040   90.2
      26701   90.2
      28223  188
      36973   92
      38386   99.8
      40580  117.8];

Пока код у меня есть is:

out = x(x(:,2) > 180,:,1); %gets all the dates with rainfall greater than 180
out2 = x(x(:,2) > 80,:,1); %gets all the dates with rainfall greater than 80
c1 = out(:,1);
c2 = out2(:,1);
rain = datestr(c1); %converts from MATLAB serial number to date
rain2 = datestr(c2); %converts from MATLAB serial number to date
X = sprintf('Heaviest rainfall will occur on %s.',rain);
X2 = sprintf('Heavy rainfall will occur on %s.',rain2);
disp(X)
disp(X2) 

My disp(X) работает и отображает:

Heaviest rainfall will occur on 08-Apr-0077.

Однако мой disp(X2) не работает и отображает

Heavy rainfall will occur on 22002003968447-------AJFAMFFpaepaeernbrrbb-------0000000000011166770010337151.

Как мне исправьте мой код для disp(X2), чтобы он показывал:

Heavy rainfall will occur on 23-Apr-0060, 29-Jan-0063, 06-Feb-0073, 08-Apr-0077, 24-Mar-0101, 04-Feb-0105, 04-Feb-0105.

1 Ответ

2 голосов
/ 25 марта 2020

Это происходит потому, что матрицы сохраняются в главном порядке столбцов в MATLAB. Вы можете изменить порядок массива символов Rain2 перед использованием функции sprintf следующим образом:

rain2(:,end+1) = ',';     rain2(end) = '.';   %For , in between and . at the end
rain2 = rain2.';  %Reordering
X2 = sprintf('Heavy rainfall will occur on %s', rain2);

Результат:

>> X2
X2 =
    'Heavy rainfall will occur on 23-Apr-0060,29-Jan-0063,06-Feb-0073,08-Apr-0077,24-Mar-0101,04-Feb-0105,07-Feb-0111.'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...