我想創建一個函數,它接收一個數組並返回零之前的數組部分。例如,[12, -4, 5, 32, 0, 4, 1, -8]
將返回[12, -4, 5, 32]
,如果數組不包含零,則返回整個數組。MATLAB函數返回一個零之前的數組的一部分
這是我到目前爲止有:
function V = Notzero(V)
V(V==0)=[];
end
我一個非常新MATLAB。我相信我寫的數組返回的數組沒有零,但我不知道如何繼續。
我想創建一個函數,它接收一個數組並返回零之前的數組部分。例如,[12, -4, 5, 32, 0, 4, 1, -8]
將返回[12, -4, 5, 32]
,如果數組不包含零,則返回整個數組。MATLAB函數返回一個零之前的數組的一部分
這是我到目前爲止有:
function V = Notzero(V)
V(V==0)=[];
end
我一個非常新MATLAB。我相信我寫的數組返回的數組沒有零,但我不知道如何繼續。
這裏有一個選項,它只是清除一切從第一個零到矢量的末尾:
function V = Notzero(V)
V(find(V == 0, 1):end) = [];
end
欲瞭解更多信息,我建議你讀了上matrix indexing,特別是colon operator,在end
關鍵字和find
功能。
試試這個:
V = [12, -4, 5, 32, 0, 4, 1, -8];
idx = find(V==0);
V = V(1:idx-1);
這裏是一個辦法(但我喜歡@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
好,好的訣竅:) – Adiel
這不符合要求_如果數組不包含0,則返回整個數組._ –