【发布时间】:2021-08-10 08:01:49
【问题描述】:
我有两张桌子:
表 1 有两列,分别称为 WP_1 和 WP_2。
表 2 有三列,分别称为 WP1、WP2 和 WC。
对于 WP_1 和 WP_2 的每一对(行),我想检查它们是否在 WP1 和 WP2 的任何一对(行)内。
如果它们在某一对 WP1 和 WP2 中,我想取该特定对的 WC 的值(0 或 1)并将其打印到同一行的 table1 中的新列 --> table1。厕所
如果一对 WP_1 和 WP_2 不适合任何一对 WP1 和 WP2,我想在 table1.WC 的特定行中打印值“2”。
这是我希望它看起来如何的示例:
what table1.Wc should look like after running the script
解释:
第 1 行中的 WP_1 和 WP_2 为 [0,0] 并且适合第 1 行中的 WP1 和 WP2 [0,145] --> 因此表 1 中的 WC 等于表 2 中的 WC
第 2 行中的 WP_1 和 WP_2 为 [0,5] 并且适合第 1 行中的 WP1 和 WP2 [0,145] --> 因此表 1 中的 WC 等于表 2 中的 WC ....
第 4 行中的 WP_1 和 WP_2 是 [115,219] 并且不适合任何行中的任何一对 WP1 和 WP2 --> 因此表 1 中该行的 WC 是 2
第 5 行中的 WP_1 和 WP_2 是 [219,262] 并且适合第 3 行中的 WP1 和 WP2 [169,1693] --> 因此表 1 中的 WC 等于表 2 中的 WC
到目前为止我的代码:
for n = 1:height(table1)
for m = 1:height(table2)
if table1.WP_1(n) >= table2.WP1(m) &...
table1.WP_2(n) <= table2.WP2(m)
table1.WC(n) = table2.WC(m);
else table1.WC(n) = 2;
end
end
end
【问题讨论】:
-
您能否更具体地说明您所面临的具体问题?提出问题的方式令人费解且难以理解。您可以创建数据集的简化版本,以代表您正在尝试使用的内容。否则,将很难为您提供帮助。您是否尝试过调试代码并查看变量和索引的状态?
-
感谢您的评论 - 我更新了我的数据并重组了我的问题。很感谢任何形式的帮助!谢谢!
-
我仍然觉得编辑后的解释太难理解了。我建议将示例数据更改为玩具问题,使用最简单的数字集仍能说明问题的所有方面。第二组示例与前两个表不对应,我觉得这很混乱。显示你真正想要的清晰的输入输出,以及你需要做的不同的事情来实现它。我也强烈建议在纸上写下你自己的算法来向自己解释;它通常有助于查看摆在您面前的所有步骤。
-
感谢您的评论 - 我编辑了所有内容,所以现在应该更清楚了。感谢阅读!
-
table2.WP1(1:m)为您提供了从 1 到 m 的WP1的所有列,但您的解释是关于比较行。table1和table2的长度是否相同?你总是想只比较行吗?如果是这样,您只需要一个循环。如果您想在table2的所有行中搜索table1的任何实例,则再次只需要1 个循环。我建议看看ismember和ismember(A,B,'rows')。
标签: matlab for-loop math matching matlab-coder