请帮我理解这个代码:什么下列MATLAB代码的平均
x(:,i) = mean((y(:,((i-1)*j+1):i*j)), 2)';
我不能在我的书中找到它。谢谢。
a = (i-1)*j+1;
b = i*j;
val = y(:,a:b);
x(:,i) = mean(val, 2)'; %# =mean(val')
正是你不明白:
请帮我理解这个代码:什么下列MATLAB代码的平均
x(:,i) = mean((y(:,((i-1)*j+1):i*j)), 2)';
我不能在我的书中找到它。谢谢。
a = (i-1)*j+1;
b = i*j;
val = y(:,a:b);
x(:,i) = mean(val, 2)'; %# =mean(val')
正是你不明白:
您发布的代码可以使用临时变量进行更具可读性?有关mean
,:
和'
的含义,请参阅matlab帮助。
数组x的第i列是数组y的第i组j列的平均值。
例如,如果i是1且j是3,则x的第1列是y的前三列的平均值。
,如果你说你不明白到底是什么会有所帮助,但这里有几个技巧:
如果你碰到这样的一个(R,C),这意味着矩阵,行r,c列(总是按此顺序)。换句话说,括号内应该有两个元素,用逗号分隔,第一个代表行,第二个代表列。
如果你有:单独在逗号的一边,那就意味着“全部”。因此,如果你有一个(r,:),那么你将有矩阵a,行r,所有列。
如果:在逗号的其中一边不是单独的,则表示“到”。所以如果你有一个(r,z:y),那就意味着矩阵a,行r,列z到y。
平均值=平均值。 Matlab中函数的格式是M = mean(A,dim)。 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-去1)J + 1,直到我Ĵ
你的代码,然后将得到的是得到的矩阵,我把它叫做Y(R,C),并执行以下操作:
mean((y(r,c), 2)
所以得到上面的结果并取每行的平均值(平均值)。由于你的代码有'之后,也就是说,你有:
mean((y(r,c), 2)'
然后它会得到列向量并转换成行向量。该行的每个元素将是y(r,c)的一行的平均值。
最后:
x(:,i) = mean((y(r,c), 2)';
意味着的上述结果将被放置在矩阵x的I栏。
不应该是x(i,:)而是?
我找不到'的意思。 – nata 2010-06-28 17:16:36
http://www.mathworks.com/access/helpdesk/help/techdoc/ref/arithmeticoperators.html – yuk 2010-06-28 18:12:19