Было бы полезно, если бы вы сказали именно то, что вы не понимаете, но вот несколько советов:
, если у вас есть что-то вроде (r, c), это означаетматрица a, строка r, столбец c (всегда в этом порядке).Другими словами, у вас должно быть два элемента в квадратных скобках, разделенных запятой, где первый представляет строку, а второй столбец.
Если у вас есть: один в одном изстороны запятой, что означает «все».Таким образом, если у вас есть (r, :), то у вас будет матрица a, строка r, все столбцы.
Если: не один в одной из сторон запятой, то это будет означать «до».Поэтому, если у вас есть (r, z: y), это означает, что матрица a, строка r, столбцы от z до y.
Среднее = среднее.Формат функции в Matlab: M = среднее (A, тусклый).A будет матрицей, по которой вы берете среднее (или среднее), M будет местом, куда будут идти результаты.Если dim = 1, вы получите вектор строки, где каждый элемент является средним значением столбца.Если dim = 2 (как в вашем случае), то вы должны получить вектор столбца, где каждый элемент является средним значением строки. Будьте осторожны , потому что в конце кода у вас есть ', что означает транспонирование.Это означает, что ваш вектор столбца будет преобразован в вектор строки.
ОК, поэтому ваш код:
x(:,i) = mean( (y(:,((i-1)*j+1):i*j)), 2 )';
Начните с внутреннего бита, то есть
y(:,((i-1)*j+1):i*j)
Итак, это говорит
матрица y (r, c)
, где
r (строка):, то есть все строки
c (столбец) равен ((i-1) j + 1): i j, то есть столбцы идут от (i-1) j + 1 до i j
Ваш код получит матрицу, полученную из того, что я назвал y (r, c), и выполнит следующее:
mean( (y(r,c), 2 )
, поэтому получите результатсверху и взять среднее (среднее) каждого ряда.Поскольку ваш код имеет «потом», то есть у вас есть:
mean( (y(r,c), 2 )'
, тогда он получит вектор столбца и преобразуется в вектор строки.Каждый элемент этой строки будет средним для ряда y (r, c).
Наконец:
x(:,i) = mean( (y(r,c), 2 )';
означает, что результат вышеупомянутого будет помещен в столбец i матрицы x.
Не должно ли это быть x (i,:) вместо?