Matlab for 循環語句
沒仔細研究你那個擬合函數的用法。
不過像這種需要分段處理數據的情況很多,有種在 matlab 里很常用的技巧感覺你可以學學:
假設原始數據(xdata)是一列 100 個數,你需要一次處理 13 個,那么下面這段代碼先將這 100 數“折疊”成一個 13 行的矩陣(x)。 我這個例子里是折疊成 13 * 8 的矩陣了。
因為 100 不能整除 13,所以會在最后補零。如果你不需要補零,而是把最后的零頭扔掉,那么就把
ncol = ceil(nxdata/n);改成
ncol = fix(nxdata/n);最后就可以在循環里一列一列的處理數據了。我這個例子只是 y(:,i) = x(:,i) 而已,你的情況應該就是調用你自已寫的擬合函數。
最后再用
y = y(:);把數據還原成一維的。
如果你需要把之前補零的值刪掉也可以在還原成一維的時候去掉。
以下是一個小例子,仔細研究一下就能學會這個小技巧了。
xdata = (1:100).';
nxdata = length(xdata);
nrow = 13; % 假設你需要一次處理 13 個數據
ncol = ceil(nxdata/nrow);
x = zeros(nrow, ncol, 'like', xdata);
size(x)
x(1:nxdata) = xdata(:);
y = zeros(nrow, ncol, 'like', xdata);
for i = 1:ncol
y(:,i) = x(:,i);
end
y = y(:);如果你在處理數據之前,能保證折疊之后是整除的,即無需補零。還用我這個小例子,比如需要折疊成 10 行,也可以用 reshape(xdata, 10, [])。[] 是讓 matlab 自己算整除后是多少列。如:
x2 = reshape(xdata, 10, []);
size(x2)
Matlab for循環語句
示例1:
x =
0.5878 0.9511 0.9511 0.5878 0.0000 -0.5878 -0.9511 -0.9511 -0.5878 -0.0000
示例2:
array =
6 3 7 8 5 1 2 4 9 10
x1 =
0.5878 0.9511 0.9511 0.5878 0.0000 -0.5878 -0.9511 -0.9511 -0.5878 -0.0000
換一個matlab運行就可以
轉載請注明出處華閱文章網 » matlab循環語句for