在Matlab中替换整个矩阵块(任意大小)

在Matlab中替换整个矩阵块(任意大小),matlab,matrix,Matlab,Matrix,我需要将矩阵的最后一行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 当然这是不合法的,但这正是我想做的。你可以做: a=randi(10,[30 7]); aNew=a; n=1; if (n+1)^2>=size(aNew,2) nRows=

我需要将矩阵的最后一行
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
当然这是不合法的,但这正是我想做的。

你可以做:

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.
 myMatrix((end - size(myeye, 1) + 1):end, :) = myeye(:, 1:size(myMatrix, 2))
注意使用关键字
end
获取最后一行索引

还要注意的是,由于myeye基本上是一个n×n单位矩阵,与零矩阵水平连接,因此可以通过更简单的方式实现相同的效果:

 myMatrix((end - n - 1):end, :) = eye(n + 2, size(myMatrix, 2))