所以我在MATLAB中有2个矩阵.如果其中一个是100 X 2矩阵,如下所示:
[a b]
[13 19]
[21 39]
[35 45]
Run Code Online (Sandbox Code Playgroud)
等.等.
另一个矩阵是NX 1矩阵,其值如下:
[1]
[3]
[5]
[7]
Run Code Online (Sandbox Code Playgroud)
等.等.
我要做的是找到第二个矩阵的'a'到'b'的所有元素的Mean值.
到目前为止我得到的是:(如果我的第一个矩阵被称为:MATRIX1
第二个矩阵称为:MATRIX2)
a= MATRIX1(1:1)
b= MATRIX1(1:2)
values = MATRIX2(a:b)
mean(values)
Run Code Online (Sandbox Code Playgroud)
这给了我我想要的,从a到b的值的平均值.但是如何创建循环以便我可以自动为MATRIX 1中的所有行执行此操作?
谢谢!
更新:我想出了如何获得循环,但现在我不知道如何获取所有值并使其成为100 X 1矩阵.这是我使用的代码:
c= size(MATRIX1,1);
for k= 1:c;
a= MATRIX1(k,1);
b= MATRIX1(k,2);
values= MATRIX2(a:b);
d= mean(values)
end
Run Code Online (Sandbox Code Playgroud)
有了这个,我得到100的d值.如何将这些值放入100 X 1矩阵?
nRows = size(MATRIX1,1);
meanValues = zeros(nRows,1);
for row = 1:nRows
meanValues(row) = mean(MATRIX2(MATRIX1(row,1):MATRIX1(row,2)));
end
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用函数ARRAYFUN,如下所示:
meanValues = arrayfun(@(a,b) mean(MATRIX2(a:b)),MATRIX1(:,1),MATRIX1(:,2));
Run Code Online (Sandbox Code Playgroud)