performance - 从 1 x n 向量创建一个 n x n-1 矩阵,其中第 i 行是没有第 i 个元素的向量,没有 for 循环

标签 performance matlab matrix vectorization matrix-multiplication

我需要这个来计算拉格朗日多项式。我很好奇如何在没有 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/

相关文章:

matlab - 使用自定义排序顺序的多键 `table/sortrows`

image - 在 Matlab 下降低图像质量

matrix - TypeError : Cannot convert Type TensorType(float64,向量)(变量子张量{int64 :int64:}. 0)到类型TensorType(float64,矩阵)

python - 删除 array([]) 括号为矩阵方程创建干净的数组

ios - 与 -ve 值一起使用时,AVplayer 逐步计数卡顿

C# 加载 xlsx 文件性能不好

java - 关于 Hibernate LazyInitialization 错误

java - 对前台服务使用 Context.startForegroundService(Intent) 而不是 Context.startService(Intent) 有什么好处吗?

image - 将不是特定强度的单色归零

c - 仅使用一个矩阵在 C 中通过部分主元实现 LU 分解