copy matrix and random it's value within certain range

10 次查看(过去 30 天)
i have recently post Copy certain number from one matrix to another. Similar to this, how can i change the value of a matrix random it within certain range? The result of matrix C and matrix D is based on matrix B value. For example
A B C D % C D
------------- %
1 1 1 1 %copy 1 to C copy 1 to D
2 1 1 1 %copy 1 to C copy 1 to D
3 3 3 3 %random 1 or 3.get 3 random 1 or 3.get 3
4 3 3 1 %random 1 or 3.get 3 random 1 or 3.get 1
5 3 1 1 %random 1 or 3.get 1 follow previous value. 1
6 5 5 5 %copy 5 random 1 or 5. get 5
7 5 5 1 %copy 5 random 1 or 5. get 1
8 4 4 1 %random 1 or 4.get 4 random 1 or 4. get 1
9 4 1 1 %random 1 or 4.get 1 follow previous value. 1
10 4 1 1 %follow previous value.1 follow previous value. 1
11 1 1 1 %copy 1 to C copy 1 to D
12 9 9 9 %copy 9 to C random 1 or 9. get 9
13 9 9 1 %copy 9 to C random 1 or 9. get 1
14 9 9 1 %copy 9 to C follow previous value. 1
15 3 3 3 %random 1 or 3.get 3 random 1 or 3. get 3
16 3 3 1 %random 1 or 3.get 3 random 1 or 3.get 1
17 3 1 1 %random 1 or 3.get 1 follow previous value. 1
18 8 8 8 %copy 8 random 1 or 8. get 8
19 8 8 8 %copy 8 random 1 or 8. get 8
20 8 8 1 %copy 8 random 1 or 8. get 1
21 0 0 1 %copy 0 random 1 or 0. get 0
22 0 0 1 %copy 0 follow previous value
Matrix A and B i already have. Matrix D is slightly have more 1 compare to C.
For matrix C : For matrix D
0 = 0, 0 = 1,
1 = 1, 1 = 1,
2 = random between 1 or 2, 2 = random between 1 or 2,
3 = random between 1 or 3, ...
4 = random between 1 or 4, ...
5=5, 6=6, 7=7, 8=8, 9=9 9 = random between 1 or 9,
Whenever its random and get, the following value is also set to 1.
1 1
3 3 %random
3 1 %random and get 1
3 1 %follow previous value
1 1 %copy 1
3 3 %random again

回答(1 个)

dpb
dpb 2016-10-6
编辑:dpb 2016-10-6
Bmn=2; Bmx=4; % ranges for B
ix=iswithin(B,Bmn,Bmx); % rule for positions
C(ix)=(rand(size(B))>0.5).*B(ix); % pick either B or 1, 50:50
Simply change the ranges for D
iswithin is my utility function
function flg=iswithin(x,lo,hi)
% returns T for values within range of input
% SYNTAX:
% [log] = iswithin(x,lo,hi)
% returns T for x between lo and hi values, inclusive
flg= (x>=lo) & (x<=hi);
>>
that is often quite useful in cases such as this to remove the complexity of the logical expressions to a lower level making the top-level code much cleaner.

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by