【问题标题】:Associating / linking an array column with another column in the array将数组列与数组中的另一列关联/链接
【发布时间】:2013-12-15 05:10:54
【问题描述】:

我有一个数组,它在第二列上完成了一些计算。我希望第三列中的值跟随/链接到第二列。

测试代码:

a1= [1,10,-11;
2,70,232;
3,33.2,-33;
4,40,44;]

a2calc=abs(a1(:,2)-max(a1(:,2))) %calculation

a2=[a1(:,1),a2calc,a1(:,3)] %new array

示例: 原始a1数组

1   10  -11
2   70   232
3   33.2  -33
4   40   44

第 2 列计算后的 a2 数组如下所示

1   60  -11
2    0   232
3   36.8  -33
4   30   44

我正在尝试让最终数组看起来像(第 3 列值跟在 / 链接到第二列)

1   60  232
2    0  -11 
3   36.8  44
4   30   -33

我遇到的问题是我不确定我是否应该使用第 2 列的索引值,如果是,我如何让它看起来像我在问题中包含的最终输出数组。

【问题讨论】:

  • 您的问题不清楚。应该应用哪条规则来处理第三列?
  • @DanielR 这就是我遇到的问题我不确定我是否应该使用第 2 列的索引值,如果是,我如何让它看起来像我包含的最终输出数组在问题中。
  • “第 3 列值跟在第二列后面”:请解释一下。他们应该在什么意义上跟随第二列?
  • @Luis Mendo 我更新说“关注/链接到第二列”
  • 但是怎么做呢?这没有任何意义。 “链接”是什么意思?它们是否以某种方式排序?从 a1a3 您更改了第 3 列,没有任何明显的逻辑。

标签: arrays matlab sorting octave


【解决方案1】:

我在这里可能错了,但在我看来逻辑是:

计算完第二列后,改变第三列的顺序,使第三列的排序方式与第二列相同。看看我的意思: 这代表两列,从高到低编号:

A = 1    1
    4    3
    2    2
    3    4

如果我理解正确,您希望得到的矩阵是

A = 1    1
    4    4
    2    2
    3    3

如果这是正确的逻辑,那么您应该检查sort 的两个输出。您可以使用第二个输出来索引第三列。

[~, idx] = sort(A(:, 2));
sorted_3 = sort(A(:, 3));

A(idx, 3) = sorted_3;

由此产生的输出是:

A =

 1.00000    60.00000   232.00000
 2.00000     0.00000   -33.00000
 3.00000    36.80000    44.00000
 4.00000    30.00000   -11.00000

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    相关资源
    最近更新 更多