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循環
程序實現的功能: 矩陣a如下 12 13 14 15 16 17 18 19 20 21 22 23將矩陣a的每一行相加求和,得到一個列向量經過轉置成行向量clear;clcs=0; %賦給s初值0a=[12,13,14;15,16,17;18,19,20;21,22,23]; %4*3矩陣afor k=a %k取a的每一列(不是每一個值或每一行),進行循環s=s+k %每一列對應的元素相加,迭代求和enddisp(s') %轉置,將列向量轉化為行向量運行結果如下:s = 12 15 18 21s = 25 31 37 43s = 39 48 57 66 39 48 57 66你看一下結果就知道了。
matlab中for循環嵌套if語句
1、新建一個子程序loopcolor。
2、然后是定義幾個變量,都是整數型。Dim myrow As Integer Dim mycol As Integer Dim mycolor As Integer。
3、為mycolor賦值。mycolor = 0。
4、對myrow進行循環。
5、在myrow的循環里面再嵌套另外一個循環mycol。
6、再循環里面,分別選中單元格,并為這些單元格填充顏色。
7、最后運行這個程序,然后回到excle的界面,就可以看到被填充的顏色塊了。
轉載請注明出處華閱文章網 » matlabfor循環語句