Я пытаюсь прочитать весь набор входных/выходных данных об окружающей среде из WIOD (база данных мировых входных данных) через вложенный цикл по странам и годам. Теперь я сделал что-то подобное для учетных записей base/data раньше. Теперь я пытаюсь загрузить данные об окружающей среде. Мой ранее работающий код выглядел следующим образом:
for yr = 95:99
V(:,:,yr-94) = xlsread(['wiot' num2str(yr) '_row_apr12.xlsx'],['WIOT_19'
num2str(yr)],'E1443:BCI1448');
end
Теперь мой код, который не работает с сообщением об ошибке «Имя файла должно быть вектором символов». выглядит следующим образом:
country =
{'AUS','AUT','BEL','BGR','BRA','CAN','CHN','CYP','CZE','DEU','DNK','ESP',...
'EST','FIN','FRA','GBR','GRC','HUN','IDN','IND','IRL','ITA','JPN','KOR',...
'LTU','LUX','LVA','MEX','MLT','NLD','POL','PRT','ROU','RUS','SVK','SVN',...
'SWE','TUR','TWN','USA','ROW'}
for c = 1:41
for year = 1995:1995
F_NRG(:,(c*35)-34:(c*35),year-1994) = transpose(xlsread([country(c)
'_EU_May12.xlsm'],[num2str(year)],'AD2:AD36'));
end
end
Я не понимаю, потому что имя файла должно быть строкой, если я выбираю страну c
через country(c)
? xlsread
вложен в команду транспонирования, и ячейки, в которых я хочу сохранить прочитанные данные, вычисляются немного сложнее, но в основном они должны быть одинаковыми? Следующий код также отображает строку для каждого c
.
for c = 1:41
country(c)
end
Можете ли вы помочь мне найти мои ошибки в кодировании? Почему Matlab не распознает имя файла как строку?
Спасибо за помощь.
F_NRG(:,(c*35)-34:(c*35),year-1994) = transpose(xlsread([country{c},... '_EU_May12.xlsm'],[num2str(year)],'AD2:AD36'));
. Если вы хотите разбить код на две строки, добавьте...
в конце первой строки. Кроме того,country
— это массив ячеек,country(c)
дает ячейку 1x1, вам нужноcountry{c}
, чтобы получить значение в ячейке. - person Anthony   schedule 16.07.2018country(c)
— это массив ячеек, поэтому[country(c) 'abc']
— это массив ячеек. Вместо этого используйте фигурные скобки, чтобы получить массив символов по индексуc
, например:country{c}
. - person Wolfie   schedule 16.07.2018