我需要将n+2
矩阵的最后一行替换为
myeye = eye(n+2, (n+1)^2);
除了明智地做到这一点之外,还有其他方法吗?
本质上,我想做这样的事情
myMatrix((n+1)^2-(n+1):end) = myeye; %the index is just the last n+2 rows
当然这是不合法的,但这就是我想做的。
你可以做:
myMatrix((end - size(myeye, 1) + 1):end, :) = myeye(:, 1:size(myMatrix, 2))
注意使用关键字end
获取最后一行索引。
另请注意,由于myeye
基本上是一个 n×n 单位矩阵与一个 zeros 矩阵水平连接,因此您可以通过更简单的方式实现相同的效果:
myMatrix((end - n - 1):end, :) = eye(n + 2, size(myMatrix, 2))
a=randi(10,[30 7]);
aNew=a;
n=1;
if (n+1)^2>=size(aNew,2)
nRows=size(aNew,2);
else
nRows=(n+1)^2;
end
aNew(size(a,1)-(n+1):end,1:nRows)=eye(n+2, (n+1)^2); %This is where you actually replace a block.