MATLAB:如何将矩阵中的随机元素随机增加一个'popping'?
MATLAB: How to randomly increase a random element in a matrix by one 'popping'?
我被一个问题困住了,不知道该怎么办:
编写一个函数,给定一个矩阵 M,该矩阵由代表位置的数字和之前在每个位置弹出的爆米花块数组成,returns 一个随机添加了一个爆米花块的矩阵。此外,函数 returns 弹出最新片段的行列坐标。
例如:
>> a = zeros(2)
a =
0 0
0 0
>> aa = popcorn(a)
aa =
1 0
0 0
>>[aaa rc] = popcorn(aa)
aaa
2 0
0 0
rc =
1 1
>> [aaaa rc] = popcorn(aaa)
aaaa =
2 0
0 1
rc =
2 2
>>aaaaa = popcorn(aaaa)
aaaaa =
2 1
0 1
到目前为止,我拥有的是:
function output = popcorn(M)
[w, z] = size(M);
a = randi(w);
f = randi(z);
b = w(a,f);
output = b;
但是我收到一条错误消息:
Attempted to access w(1,2); index out of bounds because numel(w)=1
.
Error in popcorn (line 5)
b = w(a,f);
这是我被困的地方,任何帮助将不胜感激!
您正在尝试索引到单个整数 w
- 即行数。您需要对原始矩阵进行索引。
你在哪里
b = w(a,f);
你应该
b = M(a,f);
找到您需要增加的值。您的代码不完整,通过此修复,您仍然没有增加值或返回坐标。但是,由于这是一道练习题,所以最好自己尝试这些部分。
我被一个问题困住了,不知道该怎么办:
编写一个函数,给定一个矩阵 M,该矩阵由代表位置的数字和之前在每个位置弹出的爆米花块数组成,returns 一个随机添加了一个爆米花块的矩阵。此外,函数 returns 弹出最新片段的行列坐标。
例如:
>> a = zeros(2)
a =
0 0
0 0
>> aa = popcorn(a)
aa =
1 0
0 0
>>[aaa rc] = popcorn(aa)
aaa
2 0
0 0
rc =
1 1
>> [aaaa rc] = popcorn(aaa)
aaaa =
2 0
0 1
rc =
2 2
>>aaaaa = popcorn(aaaa)
aaaaa =
2 1
0 1
到目前为止,我拥有的是:
function output = popcorn(M)
[w, z] = size(M);
a = randi(w);
f = randi(z);
b = w(a,f);
output = b;
但是我收到一条错误消息:
Attempted to access w(1,2); index out of bounds because
numel(w)=1
.
Error in popcorn (line 5)
b = w(a,f);
这是我被困的地方,任何帮助将不胜感激!
您正在尝试索引到单个整数 w
- 即行数。您需要对原始矩阵进行索引。
你在哪里
b = w(a,f);
你应该
b = M(a,f);
找到您需要增加的值。您的代码不完整,通过此修复,您仍然没有增加值或返回坐标。但是,由于这是一道练习题,所以最好自己尝试这些部分。