【发布时间】:2021-03-01 16:42:18
【问题描述】:
我有以下 3D 数组:
x = randn(31,6,1000);
我想做的是只保留满足以下条件的n次重复:
- 第一次观察的第 1 到 12 行必须是正数;
- 第二次观察的第 1 到 12 行必须为正;
- 第 1 次观察的第 1 到 12 行必须为阳性;
在编码方面:
% keep only the n repetitions out of 1000 that meet:
% 1. x(1:12, 1, :) > 0;
% 2. x(1:12, 2, :) > 0;
% 3. x(1:12, 6, :) > 0;
谁能帮帮我?
PS:数据集不代表原始数据集,只是为了看看代码如何工作。
谢谢!
【问题讨论】:
-
Nitpick:二维数组称为矩阵。 3D 数组是 3D 数组,而不是矩阵。 3D 矩阵就像 2D 向量。
-
1000 个随机正态分布值非负的概率接近 0。大约是 1/2^1000。一列是非负数的概率是 1/2^12 = 1/4096。 12 行 3 列非负数的概率为 1/12288。
-
@ThomasSablik 是真的!然而,我只需要随机数据。我需要查看代码以应用于我的原始数据集
-
从统计上讲,您必须调用
x = randn(31,6,1000);12 次才能获得一个满足条件的结果。使用x = randn(31, 6, 3); x(1:12, [1 2 6], :) = abs(x(1:12, [1 2 6], :))可以节省大量时间
标签: matlab loops if-statement matrix multidimensional-array