gpt4 book ai didi

matlab - 根据特定列的值提取多列

转载 作者:行者123 更新时间:2023-12-01 14:00:49 26 4
gpt4 key购买 nike

我正在处理 4x4 矩阵中的数据。该矩阵的示例如下所示:

2361.31888  2   3   0.03848284
2351.31888 2 3 0.03828271
2341.31888 2 3 0.03583279
2331.31888 2 3 0.03613991
2511.31888 3 3 0.09945525
2501.31888 3 3 0.10257245
2491.31888 3 3 0.08145624

第二列的值将从 21500。我想要做的是在第二列为 2 时提取第一列和第四列的值,直到第二列达到 1500。

例如,当第 2 列为 2 时我需要此行,并且想计算此子矩阵的线性回归。这也应该对原始矩阵的其余部分完成。

    2361.31888  0.03848284
2351.31888 0.03828271
2341.31888 0.03583279
2331.31888 0.03613991

并为提取的列计算线性回归。我写了这样的代码,但它不能正常工作。

for i = unique(D(:,2))'
if D(:,2)==i
X(i) = D(:,1) ;
Y(i) = D(:,4) ;
n = numel(X(i));

% // Define relevant quantities for finding quantities
sumxi = sum(X(i));
sumyi = sum(Y(i));
sumxiyi = sum(X(i).*Y(i));
sumxi2 = sum(X(i).^2);
sumyi2 = sum(Y(i).^2);

%// Determine slope and intercept
m(i) = (sumxi * sumyi - n*sumxiyi) / (sumxi^2 - n*sumxi2);
b(i) = (sumxiyi * sumxi - sumyi* sumxi2) / (sumxi^2 - n*sumxi2);
end
end

最佳答案

要根据矩阵中的列值提取行,您可以在数组索引中使用逻辑

>> D = [ 2361.31888  2   3   0.03848284; ...
2351.31888 2 3 0.03828271; ...
2341.31888 2 3 0.03583279; ...
2331.31888 2 3 0.03613991; ...
2511.31888 4 3 0.09945525; ...
2501.31888 4 3 0.10257245; ...
2491.31888 4 3 0.08145624 ];

>> indexes_where_2nd_col_is_2 = ( D(:,2) == 2 )

indexes_where_2nd_col_is_2 =

7×1 logical array

1
1
1
1
0
0
0

>> D(indexes_where_2nd_col_is_2, :)

ans =

2361.31888 2 3 0.03848284
2351.31888 2 3 0.03828271
2341.31888 2 3 0.03583279
2331.31888 2 3 0.03613991

要使它在你的循环中工作,你可以做类似的事情

for i = unique(D(:,2))'
M = D(D(:,2) == i, :);
X(i) = M(:,1);
Y(i) = M(:,4);

% Rest of your code...
end

关于matlab - 根据特定列的值提取多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48804495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com