【发布时间】:2013-11-24 22:04:24
【问题描述】:
如何将不同长度的行叠加到 Matlab 中的矩阵上?也就是说,我希望矩阵 A 的第 z 行中的第一个 x 个元素和最后一个 y 个元素为零,其中 x 和 y 在长度为 Z 的两个列向量中指定(因此对应于矩阵的行数一种)。我只能从简单循环的角度考虑解决方案,但我正在寻找一种更优雅的解决方案,避免使用循环,因为这段代码需要在主循环中运行数千次。
编辑
正如@randomatlabuser 所证实的,这就是提问者想要在没有循环的情况下做的事情:
M = 1e4; N = 1e3; A = randn(M, N);
x = randi([0, N], [M, 1]);
y = randi([0, N], [M, 1]);
for hh = 1:M
A(hh, 1:x(hh)) = 0;
A(hh, (N - y(hh) + 1):N) = 0;
end
【问题讨论】:
-
你想如何填充剩余的(非零)值?能举个简单的例子吗?
-
A 已经被填充了,但是我想用零替换每行的第一个 x 和最后一个 y 元素数,其中 x 和 y 对于每一行都是不同的,并在两个列向量中定义。
-
x 和 y 在主循环的所有迭代中都相同吗?
-
@user3029330 下次如果您已经有了想要改进的可行解决方案,请将其包括在内,以防止混淆或重复工作。