gpt4 book ai didi

matlab - 使用多个条件分配值

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:24 24 4
gpt4 key购买 nike

让我们有一个 M = [10 x 4 x 12] 矩阵。例如,我以 M(:,:,4):

为例
val(:,:,4) =

0 0 1 0
0 1 1 1
0 0 0 1
1 1 1 1
1 1 0 1
0 1 1 1
1 1 1 1
1 1 1 1
0 0 1 1
0 0 1 1

我怎样才能得到这个:

val(:,:,4) =

0 0 3 0
0 2 2 2
0 0 0 4
1 1 1 1
1 1 0 1
0 2 2 2
1 1 1 1
1 1 1 1
0 0 3 3
0 0 3 3
  • 如果我在第一列中有 1,那么所有后续的 1 都应该是 1。
  • 如果我在第一列中有 0 而在第二列中有 1,则所有后续的 1 都应该是 2。
  • 如果我在第一列和第二列中有 0,但在第三列中有 1,那么所有后续的 1 都应该是 3。
  • 如果我在前 3 列中有 0,但在第四列中有 1,那么这一列应该是四。

注:构造逻辑矩阵M:

Tab = [reshape(Avg_1step.',10,1,[]) reshape(Avg_2step.',10,1,[]) ...
reshape(Avg_4step.',10,1,[]) reshape(Avg_6step.',10,1,[])];

M = Tab>=repmat([20 40 60 80],10,1,size(Tab,3));

最佳答案

这是一种非常简单的方法,适用于 2D 和 3D 矩阵。

%// Find the column index of the first element in each "slice".
[~, idx] = max(val,[],2);

%// Multiply the column index with each row of the initial matrix
bsxfun(@times, val, idx);

关于matlab - 使用多个条件分配值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28187973/

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