Если входные данные что-то вроде этого, где первый столбец года, а второй столбец цена
data = [1990, 2.50;
1991, 3.00;
...
2000, 4.00];
Вы можете перебрать года в вашем цикл (Обратите внимание на синтаксис и как это сравнивается с таковым в вашем посте), а затем найдите второй столбец, где цена соответствует этому году, используя logical indexing.
for year = 1990:2000
% Grabs column 2 where column 1 is equal to the year
price = data(data(:,1) == year, 2);
end
Даже если ваши данные живет в двух различных структур данных, которые вы можете сделать что-то подобное (если они имеют одинаковый размер).
years = [1990, 1991, 1992, ... 2000];
prices = [2.50, 3.00, 3.50, ... 4.00];
for year = 1990:2000
price = prices(years == year);
end
Редактировать
Если вы для цикла аверса, вы можете определенно сделать то же самое, не для цикла. Наиболее надежным решением является использование arrayfun
.
annualPrices = arrayfun(@(x)prices(years == x), years, 'uniform', 0);
Это вернет массив ячеек, в котором каждый элемент - это все цены за данный год.
Если у вас есть только одна цена в год, вы можете опустить вход uniform
, и вы получите массив цен.
annualPrices = arrayfun(@(x)prices(years == x), years);
Одним из преимуществ является то, что ни один из этих подходов не требует дополнительных операций (например, сортировки) на ваших данных.
Он не будет работать, потому что вы, кажется, есть только придумал какой-то синтаксис! Где вы прочитали, что 'for x = 1: year == 1990: 2000' был действителен? –