# How do I randomly select a zero in a matrix and replace it with a value from another matrix?

4 次查看（过去 30 天）
laurie2015-2-10

I have a 52x3 zero matrix and a 1x15 matrix. A=[40 46 9 11 9 45 10 14 12 2 1 8 41 25 31];
I am trying to select the (1+n) value in A; (where n=0 for the first iteration and iterations<15) and randomly replace a zero in the zero matrix with this value.

### 采纳的回答

Image Analyst 2015-2-10
Try this:
out = zeros(52,3);
A=[40 46 9 11 9 45 10 14 12 2 1 8 41 25 31];
for k = 1 : length(A)
% Get a random location in out.
index = randi(numel(out), 1);
% Assign the kth element of A to it.
out(index) = A(k);
end
% Print to command window:
out
##### 3 个评论显示 2更早的评论隐藏 2更早的评论
Image Analyst 2015-2-10
You're welcome. Thanks for accepting. By the way, the concept I used is called "linear indexing" and is a way of numbering the elements from first to last. In this way you don't have to get two random numbers - a row and a column. Linear and logical indexing are definitely something you will need to learn about as you proceed in your MATLAB programming.

### 更多回答（1 个）

Youssef Khmou 2015-2-10
The description is not complete, because localization of position in zero matrix requires two indexes x and y try :
B=zeros(52,3);
for n=0:15
xIndex=ceil(15*rand);
yIndex=ceil(3*rand);
B(xIndex,yIndex)=A(xIndex);
end
The question is why we chose the expression for yIndex and xIndex? and is the program complete ?

### 类别

Find more on Multidimensional Arrays in Help Center and File Exchange

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!