说,我有一个矩阵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或更大的矩阵,因此我需要一个非常快的代码。
任何人都可以帮我解决这些问题吗?
答案 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 )