在MATLAB中我有3 x n
(n
是隨機數)矩陣。爲n=13
例如:插值並替換爲零
M = [40, 0, 0, 0, 41, 0, 0, 0, 0, 0, 41.6, 0, 20;
20, 0, 0, 0, 23, 0, 0, 0, 0, 0, 23, 0, 189;
102, 0, 0, 0, 192, 0, 0, 0, 0, 0, 96, 0, 21];
零的兩個非零號碼之間的每個行中的數字是隨機的,但這個數總是行之間是相同的。我想插入像這樣的每一行:
Minter = [40, 40.25, 40.5, 40.75, 41, 41.1, 41.2, 41.3, 41.4, 41.5, 41.6, 30.8, 20;
20, 20.75, 21.5, 22.25, 23, 23, 23, 23, 23, 23, 23, 106, 189;
102, 124.5, 147, 169.5, 192, 176, 160, 144, 128, 112, 96, 58.5, 21];
所以我想用線性插值方法獲得的數字替換零。
我寫了我自己的功能來做到這一點。我使用MATLAB函數find
來搜索>0
的數字索引,然後根據兩個索引之間的差異(來自find
函數)並根據第一個左右非零數字(從原始矩陣),我計算這兩個非零數字之間的數字,並用原始矩陣中的這些數字替換零。我正在分別處理每一行。
此方法工作正常,但速度不是很快。 MATLAB中有更快的方法嗎?我嘗試了interp1
函數,但沒有取得太大的成功。
那麼,我寫的幫助你嗎?它有用嗎? – rayryeng
ECHO!回聲!..... e .... ch .... o。 – rayryeng
我很抱歉遲到的答案!是的,它非常好用!非常感謝!!! – dejh