在矩阵的行中插入元素[MATLAB]

时间:2017-07-18 01:17:30

标签: matlab matrix

说,我有一个矩阵A

A = [1 0 0 0 1 0 ;0 1 0 0 0 1;0 0 0 1 0 0;0 0 1 0 0 0];

A =

    1     0     0     0     1     0
    0     1     0     0     0     1
    0     0     0     1     0     0
    0     0     1     0     0     0  

我想在第二行的第三列中添加零。为了保持A的第二行的最后一个元素的相同维度,即也必须删除一个。

A =

     1     0     0     0     1     0
     0     1     0     0     0     0
     0     0     0     1     0     0
     0     0     1     0     0     0

如何在一行代码中执行这两个步骤?

此外,如果我需要在第三行的第四列中执行相同的操作,是否有办法用一行代码执行第二行和第三行操作而不使用循环?

此外,我可能需要在特定行中插入多个零。

最后,我将处理尺寸为1000x1000或更大的矩阵,因此我需要一个非常快的代码。

任何人都可以帮我解决这些问题吗?

1 个答案:

答案 0 :(得分:1)

在这种情况下,for循环很好,它比调用函数句柄更快:

function [ A ] = InsertValue( A, RowColVal )
    % example: RowColVal=[2,3,0; 4,1,0.3; ];
    for i=1:size(RowColVal)
        row=RowColVal(i,1);
        col=RowColVal(i,2);
        val=RowColVal(i,3);
        A(row,col:end)=[val, A(row,col:end-1)] ;
    end
end

要测试的脚本:

A = [1 0 0 0 1 0 ;0 1 0 0 0 1;0 0 0 1 0 0;0 0 1 0 0 0];
%A=rand(1000);
RowColVal=...
    [2,3,0; 
    4,1,1;];
[ A ] = InsertValue( A, RowColVal )