【发布时间】:2016-05-27 13:13:58
【问题描述】:
我有一个矩阵,其中包含一些我想擦除的零值。
a=[ 1 2 3 0 0; 1 0 1 3 2; 0 1 2 5 0]
>>a =
1 2 3 0 0
1 0 1 3 2
0 1 2 5 0
但是,我只想删除每行最后一个非零值之后的那些。
这意味着我想从第一行保留1 2 3,从第二行保留1 0 1 3 2,从第三行保留0 1 2 5。
然后我想将剩余的值存储在一个向量中。在示例的情况下,这将导致向量
b=[1 2 3 1 0 1 3 2 0 1 2 5]
我想出的唯一方法涉及我想避免的 for 循环:
b=[];
for ii=1:size(a,1)
l=max(find(a(ii,:)));
b=[b a(ii,1:l)];
end
有没有办法向量化这段代码?
【问题讨论】:
-
我已经编辑了您的标题,使其更能描述您的特定问题。使您的帖子标题“我如何矢量化此代码”是没有意义的,它对任何人都没有帮助。如果其他人通过这种方式看到可能有同样问题的标题是什么,这肯定会有所帮助。我还编辑了您的帖子以进行一般语法修复。
标签: matlab matrix vector vectorization