如何将矩阵中的所有零替换为按升序索引从1到9的向量?

1次查看(最近30天)
健康坦普尔
健康坦普尔 2021年5月13日
评论: 图像分析员 2021年5月14日
我有一个矩阵x
x=
0 4 9 9 4 0
4 0 -3 3 -1 0
0 0 9 9 3 -2
0 0 5 5 10 0
-3 9 -4 -4 10 9
0 0 -1 8 5 0
我怎么能 替换所有零 有价值 1到9 按指数升序排列 ?
4评论
健康坦普尔
健康坦普尔 2021年5月14日
是的,这是家庭作业。我现在意识到我把它丢在哪里了哈哈,有一些元素我打错了,我的错。但是,感谢你的代码,我能够操纵它来得到我需要的正确答案。谢谢

登录以发表评论。

公认的答案

图像分析员
图像分析员 2021年5月13日
试试这个。替换是按“列主”顺序进行的,因为这是MATLAB的工作方式。
x=[
0 4 9 9 4 0
4 0 -3 3 -1 0
0 0 9 9 3 -2
0 0 5 5 10 0
-3 9 -4 -4 10 9
0 0 1 8 5 0]
零映射=x==0
numZeros=sum(zeroMap(:)
x(零映射)=1:numZeros
----------------------------------------------------------------------------------
x=
0 4 9 9 4 0
4 0 -3 3 -1 0
0 0 9 9 3 -2
0 0 5 5 10 0
-3 9 -4 -4 10 9
0 0 -1 8 5 0
零映射=
6×6逻辑阵列
1 0 0 0 0 1
0 1 0 0 0 1
1 1 0 0 0 0
1 1 0 0 0 1
0 0 0 0 0 0
1 1 0 0 0 1
numzero=
12
x=
1 4 9 9 -4 9
4 5 -3 -3 -1 10
2 6 9 9 3 -2
3 7 5 5 10 11
-3 9 -4 -4 10 9
4 8 -1 8 5 12
如果不是从1-12开始,而是从1-9开始然后从1-3开始,你可以这样做:
x=[
0 4 9 9 4 0
4 0 -3 3 -1 0
0 0 9 9 3 -2
0 0 5 5 10 0
-3 9 -4 -4 10 9
0 0 1 8 5 0]
零映射=x==0
numZeros=sum(zeroMap(:)
v=rem(0:numZeros-1,9)+1
x(零映射)=v
五=
1 2 3 4 5 6 7 8 9 1 2 3
x=
1 4 9 9 -4 9
4 5 -3 -3 -1 1
2 6 9 9 3 -2
3 7 5 5 10 2
-3 9 -4 -4 10 9
4 8 -1 8 5 3
4评论
图像分析员
图像分析员 2021年5月14日
不客气(感谢您接受答案以奖励声誉积分。)
小贴士:你知道你可以吗 单击代码段右上角的双页图标 若要将代码复制到剪贴板中,则可以将其从剪贴板粘贴到MATLAB编辑器窗口中。

登录以发表评论。

更多答案(0)

s manbetx 845


释放

R2021a

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始狩猎!