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);

找到您需要增加的值。您的代码不完整,通过此修复,您仍然没有增加值或返回坐标。但是,由于这是一道练习题,所以最好自己尝试这些部分。