Мне нужна помощь в этой проблеме
У меня есть эта матрица в MATLAB:
A = [ 25 1.2 1
28 1.2 2
17 2.6 1
18 2.6 2
23 1.2 1
29 1.2 2
19 15 1
22 15 2
24 2.6 1
26 2.6 2];
1-й столбец - это некоторые измеренные значения для температуры
2-й столбец - этоиндексный код, представляющий цвет (1,2: красный, ..... и т. д.)
3-й столбец - час взятия образца.Только в часы от 1 до 2
Я хочу, чтобы матрица управлялась 2-м столбцом следующим образом:
, если она равна 1,2, программа найдет среднее значение всех температур в час 1, которое
соответствует 1,2
Итак, здесь (25 + 23) / 2 = 24
, а также находит среднее значение всех температур в час 2, что соответствует
до 1,2, (28 + 29) / 2 = 28,5
и это среднее значение:
[24
28.5]
заменит все значения температуры в часы 1 и 2
это соответствует 1.2.
Затем он делает то же самое для индексов 2.6 и 15
Итак, желаемый результат будет:
B = [ 24
28.5
15.5
22
24
28.5
19
22
15.5
22]
Моя проблемав использовании цикла.Я мог бы сделать это только для одного индекса за один прогон.
например,
T=[];
index=1.2;
for i=1:length(A)
if A(i,2)==index
T=[T A(i,1)];
else
T=[T 0];
end
end
Итак, T - это извлеченный T, который соответствует 1.2, а другие записи - нули
Затем я написал длинный код, чтобы найти среднее значение, и в конце я смог найти матрицу
, которая соответствует ТОЛЬКО индексу 1.2:
B = [24
28.5
0
0
24
28.5
0
0
0
0]
Но это только для одногоиндекс и назначает нули для других индексов.Я могу сделать это для всех
индексов в отдельных прогонах, а затем добавить B, но это займет очень много времени, так как моя реальная матрица
составляет 8760 на 5.
IЯ уверен, что есть более короткий способ сделать это.
Спасибо
С уважением