Этот пример показывает, как загрузить данные из веб-сервиса и использовать функцию в качестве читателя содержимого с 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. Любезность данных о солнечном пятне AAVSO, первоначально опубликованного в количествах Солнечного пятна AAVSO: 1943-2013, AAVSO Солнечный Раздел (Р. Хоу, Стул).
См. Политику конфиденциальности NGDC, Правовую оговорку и Авторское право на условия предоставления услуг NGDC.
См. Солнечный Раздел AAVSO для получения дополнительной информации о солнечных данных AAVSO, включая условия использования.