如何在Matlab中将不同长度的行叠加到矩阵上?也就是说,我希望矩阵A的z行中的第一个x元素数和最后的y元素数为零,x和y在长度Z的两个列向量中指定(因此对应于矩阵A的行数)。我只能从简单循环的角度考虑解决方案,但我正在寻找一种更优雅的解决方案,避免使用循环,因为这段代码需要在主循环中运行数千次。
编辑
正如@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发布于 2013-11-24 23:55:04
你想做的是:
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但没有循环,对吧?
https://stackoverflow.com/questions/20181653
复制相似问题