Ash*_*har 1 arrays matlab image-processing matrix
我有一个大小为 352x240 uint_8 的矩阵 Cr。

如何用最后一个非零索引替换零?例如,输出应该是这样的:
141 141 141 142 ...
141 141 141 142 ...
141 141 141 142 ...
141 141 141 142 ...
149 148 150 150 ...
. . . . ...
. . . . ...
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢。谢谢
这适用于零和非零的出现不一定是周期性的或跨列一致的一般情况。它假设第一行不包含零(否则问题未定义):
result = Cr(cummax((Cr~=0).*(1:size(Cr,1)).', 1) + (0:size(Cr,1):numel(Cr)-1));
Run Code Online (Sandbox Code Playgroud)
要了解它的工作原理,请参阅:
例子:
>> Cr = [141 141 141; 0 0 0; 0 0 145; 147 0 0; 149 148 0; 0 0 0]
Cr =
141 141 141
0 0 0
0 0 145
147 0 0
149 148 0
0 0 0
>> result = Cr(cummax((Cr~=0).*(1:size(Cr,1)).', 1) + (0:size(Cr,1):numel(Cr)-1))
result =
141 141 141
141 141 141
141 141 145
147 141 145
149 148 145
149 148 145
Run Code Online (Sandbox Code Playgroud)