在MATLAB中创建循环以查找方法
我在MATLAB中有两个矩阵。如果其中一个是100 X 2矩阵,如下所示:在MATLAB中创建循环以查找方法,matlab,Matlab,我在MATLAB中有两个矩阵。如果其中一个是100 X 2矩阵,如下所示: [a b] [13 19] [21 39] [35 45] [1] [3] [5] [7] ect。ect 另一个矩阵是nx1矩阵,其值如下: [a b] [13 19] [21 39] [35 45] [1] [3] [5] [7] ect。ect 我要做的是找到第二个矩阵中从'a'到'b'的所有元素的平均值 到目前为止,我得到的是: (如果我的第一个矩阵被称为:MATRIX1 第二个矩阵称为:MATRIX
[a b]
[13 19]
[21 39]
[35 45]
[1]
[3]
[5]
[7]
ect。ect
另一个矩阵是nx1矩阵,其值如下:
[a b]
[13 19]
[21 39]
[35 45]
[1]
[3]
[5]
[7]
ect。ect
我要做的是找到第二个矩阵中从'a'到'b'的所有元素的平均值
到目前为止,我得到的是:
(如果我的第一个矩阵被称为:MATRIX1
第二个矩阵称为:MATRIX2)
这给出了我想要的,从a到b的平均值。
但是我如何创建一个循环,以便能够自动为矩阵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
通过这个,我得到100个d值。如何将这些值放入一个100 X 1的矩阵中?以下是如何使用: 另一种方法是使用如下函数:
以下是如何使用一个: 另一种方法是使用如下函数: 你快到了
elems = 100
values = zeros(1, elems)
for row = 1:elems
a= MATRIX1(1:1)
b= MATRIX1(1:2)
values(row) = MATRIX2(a:b)
end
mean(values)
你快到了
elems = 100
values = zeros(1, elems)
for row = 1:elems
a= MATRIX1(1:1)
b= MATRIX1(1:2)
values(row) = MATRIX2(a:b)
end
mean(values)
只是为了澄清一下,你想让矩阵2中的第a个元素变成第b个元素,并对所有这些值取平均值吗 这应该起作用:
[r c] = size(MATRIX1);
myMeans = zeros(r,1);
for i = 1:r
myMeans(i) = mean(MATRIX2(MATRIX1(i,1):MATRIX1(i,2)))
end
这将存储myMeans中行的所有平均值只是为了澄清,您想要将矩阵2中的第“a”个元素转换为第“b”个元素,并对所有这些值进行平均吗 这应该起作用:
[r c] = size(MATRIX1);
myMeans = zeros(r,1);
for i = 1:r
myMeans(i) = mean(MATRIX2(MATRIX1(i,1):MATRIX1(i,2)))
end
这将存储myMeans中所有行的平均值看起来我已经失败了,但为了多样性,使用
cellfun
的另一个选项是:
cellfun(@(pair) mean(x(pair(1):pair(2))), num2cell(inds, 2))
看起来我已经被打败了,但为了多样化,使用
cellfun
的另一个选项是:
cellfun(@(pair) mean(x(pair(1):pair(2))), num2cell(inds, 2))
我试图创建一个包含平均值的第三个100 X 1矩阵(与矩阵1的行数相同)。我试图创建一个包含平均值的第三个100 X 1矩阵(与矩阵1的行数相同)。这通常是一个更好的方法,因为Matlab通常不会有效地处理
for
循环,对于循环,cellfun
/arrayfun
通常比更低效:这通常是一种更好的方法,因为Matlab通常不会有效地处理
循环的,但是,对于
循环,cellfun
/arrayfun
通常比更低效: