我想在matlab中操作矩阵/查找表。这是我正在使用的Matrix:
0 5 10 15 20 25 30 35 40 45 50
0 3 4 5 6 4 5 5 5 5 5
20 3 4 5 6 4 5 5 5 5 5
27 3 4 5 6 4 5 5 5 5 5
34 3 4 5 6 4 5 5 5 5 5
41 3 4 5 6 4 5 5 5 5 5
49 3 4 5 6 4 5 5 5 5 5
56 3 4 5 6 4 5 5 5 5 5
63 3 4 5 6 4 5 5 5 5 5
71 3 4 5 6 4 5 5 5 5 5
78 3 4 5 6 4 5 5 5 5 5
85 3 4 5 6 4 5 5 5 5 5
93 3 4 5 6 4 5 5 5 5 5
100 3 4 5 6 4 5 5 5 5 5
我希望将第一列和第一行用作我的变量。所以,例如,如果我想操纵某个地区,我该怎么做?例如5 - 15(顶行)和20-41(第一列)之间的所有值乘以1.33。
理想情况下,我希望将其用于GUI,但我希望首先理解这个概念,因为我仍然是该软件的新用户。
感谢所有帮助,
亲切的问候,
山姆
答案 0 :(得分:1)
使用logical index构建bsxfun
以组合行和列条件(也可以使用repmat
完成)。然后使用该索引将所需操作应用于所选条目。
让A
表示您的矩阵:
ind = bsxfun(@and, A(1,:)>=5 & A(1,:)<=15, A(:,1)>=20 & A(:,1)<=41);
A(ind) = A(ind)*1.33;
答案 1 :(得分:0)
您可能需要创建某种查找功能或数据结构。我会为你的“数据”矩阵分别创建第一行和第一列的两个向量,并使用find()函数查找相应的索引。
如果您知道要在矩阵中修改的值的索引,那么
A(3:6,2:4) = 1.33*A(3:6,2:4);
应该有效。
答案 2 :(得分:0)
在这种情况下,我实际上会使用2个索引,每个维度一个。
我假设您的数据在一个矩阵中,但是对于使用2个vectrices和矩阵的情况,不应该太难调整。
idx1 = A(1,:)>=5 & A(1,:)<=15;
idx2 = A(:,1)>=20 & A(:,1)<=41);
A(idx1,idx2) = A(idx1,idx2)*1.33