Matrix addition in a loop in a random column
1 次查看(过去 30 天)
显示 更早的评论
I have written a code, in which a block of 1x1 gets added to a Matrix of zeros M=zeros(10,10); and shifts the block from round to round one position down. My Problem is, that the Block is fixed in Column 1 but I want it to be in a Random position in Line 1. How can I implement this?
The other Problem is, that I want this block to be bigger than just 1x1. I want it to be 2x2 big. So I guess the code for this is: M(1:2,1:2)=1; but when I just change every Vektor Like M(1)=M(1)+1; to M(1:2,1:2)=M(1:2,1:2)+1 it doesnt work.. so my question is, how can I change these 1x1 blocks to 2x2 blocks, randomly placed in Line 1, so that everything still works?
Y=10;
X=10;
Matrix=zeros(Y,X);
for n=0:6
Matrix(1)=Matrix(1)+1;
for k=2:Y
Test = Matrix(k)+1;
if Test == 1
Matrix(k-1) = 0;
Matrix(k) = 1;
disp(Matrix)
end
end
end
Thank you!
0 个评论
采纳的回答
dpb
2020-7-31
Must reference the same size section of array on LHS of an assignment as the RHS unless assign the entire LHS variable to RHS.
So if M is the large array and m is the smaller, then
szm=2; % define the size of m
m=ones(szm); % define square of 1s of szm x szm
...
M(i:i+szm-1,j:j+szm-1)=m; % assign m to M at 1,j location for upper rh corner of m
...
Do the same thing for the array of zeros to write at the previous location before the new location.
As for a random colum, just use
szM=size(M,1); % size of the matrix M
j=randi([1 szM]); % pick random integer between 1 and szM (size of M)
to pick the j column randomly for each iteration.
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!