В этом примере показано, как загрузить данные из веб-службы и использовать функцию в качестве средства чтения содержимого с webread.
Национальный центр геофизических данных (НГДЦ) предоставляет различные данные о геофизической и космической погоде через веб-службу. Среди других наборов данных NGDC агрегирует номера солнечных пятен, опубликованные Американской ассоциацией наблюдателей за переменными звездами (AAVSO). Использовать webread скачать номера солнечных пятен за каждый год с 1945 года.
api = 'http://www.ngdc.noaa.gov/stp/space-weather/'; url = [api 'solar-data/solar-indices/sunspot-numbers/' ... 'american/lists/list_aavso-arssn_yearly.txt']; spots = webread(url); whos('spots')
Name Size Bytes Class Attributes spots 1x1269 2538 char
Веб-служба NGDC возвращает данные солнечных пятен в виде текста. По умолчанию webread возвращает данные в виде символьного массива.
spots(1:100)
ans =
American
Year SSN
1945 32.3
1946 99.9
1947 170.9
1948 166.6webread может использовать функцию для возврата данных другого типа. Вы можете использовать readtable с webread для возврата данных солнечных пятен в виде таблицы.
Создать weboptions объект, определяющий функцию для readtable.
myreadtable = @(filename)readtable(filename,'HeaderLines',1, ... 'Format','%f%f','Delimiter','space','MultipleDelimsAsOne',1); options = weboptions('ContentReader',myreadtable);
Для получения этих данных вызовите readtable с несколькими Name,Value входные аргументы для преобразования данных. Например, Format указывает, что каждая строка имеет два числа. Пробелы являются разделителями, и несколько последовательных пробелов рассматриваются как один разделитель. Звонить readtable с этими входными аргументами, перенос readtable и аргументы в новой функции, myreadtable. Создать weboptions объект с myreadtable в качестве считывателя содержимого.
Загрузите данные солнечных пятен и верните их в виде таблицы.
spots = webread(url,options);
whos('spots')
Name Size Bytes Class Attributes spots 76x2 2932 table
Просмотрите данные солнечных пятен по столбцам и строкам.
spots(1:4,{'Year','SSN'})
ans =
Year SSN
____ _____
1945 32.3
1946 99.9
1947 170.9
1948 166.6
Постройте график числа солнечных пятен по годам. Используйте табличные функции для выбора номеров солнечных пятен до 2013 года. Преобразовать Year и SSN для создания массивов и вывода их на печать.
rows = spots.Year < 2014;
vars = {'Year','SSN'};
spots = spots(rows,vars);
year = spots.Year;
numspots = spots.SSN;
figure
plot(year,numspots);
title('Sunspot Data');
xlabel('Year');
ylabel('Number of Sunspots');
xlim([1940 2015])
ylim([0 180])

Агрегированные данные и веб-сервис предоставлены NGDC. Данные солнечных пятен предоставлены AAVSO, первоначально опубликованы в AAVSO Sunspot Counts: 1943 - 2013, AAVSO Solar Section (R. Howe, Chair).
Условия предоставления услуг NGDC см. в разделе Политика конфиденциальности NGDC, Отказ от ответственности и Авторское право.
Дополнительные сведения о солнечных данных AAVSO, включая условия использования, см. в разделе AAVSO Solar.