我在 Matlab 中有一个随机数数据矩阵,数字范围为 0-9(所以两列十行)。如果 A 列第 3 行大于 0,我想从第 3 行开始创建一个新列,以从 B 列的第 3 行给我 5 个以下数字。
有没有一种简单的方法可以在 matlab 的命令窗口中执行此操作?
我在 Matlab 中有一个随机数数据矩阵,数字范围为 0-9(所以两列十行)。如果 A 列第 3 行大于 0,我想从第 3 行开始创建一个新列,以从 B 列的第 3 行给我 5 个以下数字。
有没有一种简单的方法可以在 matlab 的命令窗口中执行此操作?
假设我正确解释了这个问题:
test = rand(10,2);
if test(3,1) > 0; new_column = test(3:7,2); end
EDIT1,每条评论:
% Setup
x = rand(10,1);
y = rand(10,1);
xx = logical(x);
z = 5;
% One-liner
w = zeros(sum((xx==1)),z); step = 1; for ii = 1:length(xx), if xx(ii) == 1, w(step,:) = y(ii:(ii+z-1)); step = step+1; end,end,
但是,如果 xx == 1 在大于 (z+1) 的索引处,您将不会获得 z 观测值,这将出错。你需要进一步澄清你想要做什么。
是否有任何特殊原因必须在命令行中完成?