如何替换matix的上三分之一,中三分之一和下三分之一的元素

231次浏览(过去30天)
这个问题是软锁定的:新答案等同于已经发布的答案可能会被删除而不事先通知。
我的任务如下:
写一个叫做trio的函数,它接受两个正整数输入n和m。函数返回一个3n × m的矩阵T。T的上三分之一(一个n × m子矩阵)都是1,中间的三分之一都是2,而下面的三分之一都是3。参见下面的例子:
M =三人组(2,4)
M =
1 1 1 1
1 1 1 1
2 2 2 2
2 2 2 2
3 3 3 3
3 3 3 3
这是我写的代码,但它只适用于T = trio (4,3)我希望我的代码适用于任何输入(n,m)
函数T = trio (n, m)
T = randi (10, (3 * n), m);
T (1:n,:) = 1;
T ((n+1):(end-(n-1)),:) = 2;
T ((n+3):end,:) = 3;
结束
怎么可能只调用任何矩阵的上三分之一、中三分之一和下三分之一呢?
先谢谢你了。
6个评论
里克
里克 2020年8月17日
编辑:里克 2020年8月18日
我要删除重复的答案。我将把下面的列表作为解决方案列表。万博 尤文图斯从当前的答案部分,我将只留下上面的每一个:
  1. 所有的回答都是关于如何解决这个问题的一般性建议
  2. 答案超过1票
  3. 分配完整大小的数组0然后索引进去,写出正确的值
  4. 使用非标准函数分配完整大小的数组(如兰迪)并将其索引,并写入正确的值
  5. 3和4,但三个部分分开,需要串联
  6. 克隆亚麻(载于评论
  7. repmat结合隐式展开
如果有新的有效的解决方案,万博 尤文图斯我当然也会留下这些,尽管我认为非深奥的解决方案可能会用尽。

登录发表评论。

接受的答案

詹姆斯Tursa
詹姆斯Tursa 2019年5月1日
编辑:詹姆斯Tursa 2019年5月1日
行索引错误。
前n行是1:n,这是正确的。
第二个n行索引比第一个集合多n,所以简单地加上n: n + (1:n)
第三个n行索引比第二组多n行,我会让你们算出来(很简单)

更多答案(7)

AYUSH GURTU
AYUSH GURTU 2019年5月28日
函数T = trio (n, m)
T = randi (10, (3 * n), m);
T (1:n,:) = 1;
T ((n+(1:n)),:) = 2;
T (n+(n+(1:n)):end,:) = 3;
结束
2的评论

登录发表评论。


普拉卡什阿南德
普拉卡什阿南德 2019年11月8日
那是我的三重奏代码。
%来自印度。
函数T =三(n,米)
x = 1 (n, m);
y = 2 * x;
z = 3 * x;
T = [x, y, z];
结束
7评论
OUSSAMA El GABBARI
OUSSAMA El GABBARI 2022年1月19日
我看你做的那个功能是很有限的。我想知道它是否适用于更大维度的矩阵!

登录发表评论。


埃文邮件用户代理
埃文邮件用户代理 2019年12月2日
函数T =三(n,米)
T = [(n, m); 2 * 1 (n, m); 3 *的(n, m)]
结束
3评论

登录发表评论。


狗萨瓦河
狗萨瓦河 2019年8月22日
函数D = trio(n,m)
A = randi(1,n,m);
B = 2 + rand(n,m)*0;
C = 3 + rand(n,m)*0;
D = [a;b;c];
结束

Juvraj Singh Sandhu
Juvraj Singh Sandhu 2020年10月4日
编辑:Juvraj Singh Sandhu 2020年10月4日
这将适用于所有输入
函数T= trio(n,m);
T1 = 1 (n,米);
T2 = 2 * 1 (n, m);
T3 = 3 *的(n, m);
T = (T1, T2、T3);

玛雅ghugretkar
玛雅ghugretkar 2019年6月5日
函数T =三(n,米)
T (3 * n, m) = 3;%或者你可以使用随机no。一代…但是由于我们正在分配值,这个vl工作得很好!
T (1: n:) = 1;
T (n (n + 1): 2 *,:) = 2;
T ((2 * n + 1): 3 * n:) = 3;
结束
希望这对你有帮助,欢迎!

SADIQ GBAGBA
SADIQ GBAGBA 2020年3月4日
函数[T] =三(n,米)
T = 1 (3 * n, m);
T (n + 1:2 * n:) = 2;
T (n + n + 1:3 * n:) = 3;
结束

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!