我试图创建一个接收数组的函数,并在零之前返回数组的一部分。例如,[12, -4, 5, 32, 0, 4, 1, -8]
将返回[12, -4, 5, 32]
,如果数组不包含零,则返回整个数组。
这是我到目前为止所拥有的:
function V = Notzero(V)
V(V==0)=[];
end
我是MATLAB的新手。我相信我所写的内容会返回没有零的数组,但我不确定如何继续。
答案 0 :(得分:5)
这是一个选项,它可以清除从向量的第一个零到结尾的所有内容:
function V = Notzero(V)
V(find(V == 0, 1):end) = [];
end
有关详细信息,我建议您阅读matrix indexing,特别是colon operator,end
关键字和find
功能。
答案 1 :(得分:2)
这是一种方式(但我更喜欢@gnovice's answer):
result = V(cumprod(V~=0)~=0);
示例:
>> V = [12, -4, 5, 32, 0, 4, 1, -8];
>> result = V(cumprod(V~=0)~=0)
result =
12 -4 5 32
>> V = [20 40 30 10];
>> result = V(cumprod(V~=0)~=0)
result =
20 40 30 10
答案 2 :(得分:0)
试试这个:
V = [12, -4, 5, 32, 0, 4, 1, -8];
idx = find(V==0);
V = V(1:idx-1);