В этом примере показано, как загрузить данные из веб-сервиса и использовать функцию в качестве считывателя содержимого с webread
.
Национальный центр геофизических данных (NGDC) предоставляет различные геофизические и космические данные о погоде через веб-сервис. Среди других наборов данных 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.6
webread
может использовать функцию для возврата данных другого типа. Можно использовать 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. Данные Sunspot предоставлены AAVSO, первоначально опубликованные в AAVSO Sunspot Counts: 1943-2013, AAVSO Solar Section (R. Howe, Chair).
См. «Политика конфиденциальности NGDC», «Отказ от ответственности» и «Авторские права» для условий обслуживания NGDC.
Смотрите Раздел Солнца AAVSO для получения дополнительной информации о данных о солнечной энергии AAVSO, включая условия использования.