我需要这个来计算拉格朗日多项式。我很好奇如何在没有 for
循环的情况下做到这一点。目前的代码如下所示:
tj = 1:n;
ti = zeros(n,n-1);
for i = 1:n
ti(i,:) = tj([1:i-1, i+1:end]);
end
我的tj
实际上不仅仅是一个1:n
向量,但这并不重要。虽然这个 for 循环完成了工作,但我宁愿使用一些矩阵运算。我尝试寻找一些合适的矩阵来相乘,但到目前为止还没有成功。
最佳答案
这里有一个方法:
v = [10 20 30 40]; %// example vector
n = numel(v);
M = repmat(v(:), 1, n);
M = M(~eye(n));
M = reshape(M,n-1,n).';
给出
M =
20 30 40
10 30 40
10 20 40
10 20 30
关于performance - 从 1 x n 向量创建一个 n x n-1 矩阵,其中第 i 行是没有第 i 个元素的向量,没有 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35214039/