矩阵的元素如何被有效地清除?

时间:2018-11-09 00:32:23

标签: matlab loops for-loop matrix element

我有一条从矩阵的特征值获得的曲线。我想将此曲线封闭为另一条作为参考曲线的曲线。为此,我必须清除该矩阵的非零元素。由于矩阵是对称的,因此将其变成上三角矩阵。然后,我认为应该找到该矩阵的非零元素,因此应该对它们的数量使用“ For-Loop”。为简单起见,假设任何非零元素的原始值的90%到1.1%都适合扫描。例如,考虑以下(2,2)矩阵: `

A=[1 2;2 0],B=zeros(size(A)),
A=triu(A),
[row,col]=find(A~=0);
low_limit=0.9;step_limit=0.1;high_limit=1.1;
i=1;
for a=low_limit*A(row(i),col(i)):step_limit*A(row(i),col(i)):high_limit*A(row(i),col(i))
    B(row(i),col(i))=a;B(col(i),row(i))=a;
    i=i+1;% i increases for reaching next element
    for b=low_limit*A(row(i),col(i)):step_limit*A(row(i),col(i)):high_limit*A(row(i),col(i))
        B(row(i),col(i))=b;B(col(i),row(i))=b;
        %after get eigenvalue,compare with the data of reference curve for minimum difference
    end
    i=i-1;% i decreases for reaching previous element
end

我们如何对任何尺寸的矩阵执行此操作?有没有一种方法可以避免编写顺序循环?我的意思是,例如,如果有40个非零元素,那么将有40个“ For循环” !!! 如果此程序不够好,还有其他更有效的方法吗? 确实,尽管并行化,但对于“ For循环”的数量仍然存在很大的担忧,这会降低速度。

0 个答案:

没有答案