我覺得前面回答的貌似已經(jīng)可以了,難道你是想看到屏幕輸出“y1=1;y2=4;y3=9;”,那你可以試試這個: for i=1:3 y(i)=i^2; fprintf(1,['y' num2str(i) '=%d;'],y(i)); end fprintf(1,'n'); 結(jié)果是: y1=1;y2=4;y3=9; >>
有時候在使用matlab的時候,想使用for循環(huán),怎么使用呢?怎么使用呢?怎么使用呢?下面360新知帶你一探究竟!
材料/工具
電腦MATLAB
可以定于好一個用來存儲循環(huán)結(jié)果的數(shù)組,將每次循環(huán)的結(jié)果送到這個數(shù)組中。 例子: a=ones(1,10); for k=1:10 a(k)=k; end
方法
首先介紹一下matlab中for循環(huán)的格式,主要有兩種格式,如圖所示。
不是空的,賦值的時候出錯了,我改了一點,不知道對你有用沒。。 % clear;close all I=imread('1.jpg');%讀入原始jpg格式圖像 figure plot(1,1) imshow(I) W=size(I,2); %得到圖像高度 I1=rgb2gray(I);%將原圖像轉(zhuǎn)化為灰度圖象 figure;subplot(2
通過實例來介紹for循環(huán)怎么用,首先求1到5的和,代碼:
從R=xlsread('。。。.xlsx','sheet1','B1:B1359')后,要調(diào)用每個數(shù)值,應該用for循環(huán)語句來取得。即 R=xlsread('。。。.xlsx','sheet1','B1:B1359') n=length(R) %獲得R向量的長度 for i=1:n Ri=R(i); %讀取第i位置的R值 。。。 end
Y=0;
for i=1:5
for(循環(huán)初值:單步執(zhí)行幅度:終止條件)%(三個都可以省略) 循環(huán)內(nèi)容; end help可以在matlab的命令提示窗口使用 例如:help for
Y=Y+i;
如果數(shù)組a中第一行的1000個元素中有大于0.5的,則將這個元素重新賦值為1,其它情況(等于或小于0.5)則重新賦值為-1。m是讓rand函數(shù)產(chǎn)生多少列的數(shù)組,rand(1,m)表示產(chǎn)生1行m個列的隨機數(shù)組。
end
fprintf('Y=%d n',Y);如圖所示:
非要這么搞只能用cell了: x = {[1,2], [3,4,5]};for i = x disp(i);end但這一般并不比迭代腳標方便,所以還是要自己斟酌。
在命令行窗口按回車鍵后,可以看到得出15的結(jié)果,如圖所示。
這是可以的,如: b(1)=2000; for k=2:5 b(k)=b(k-1)+b(k-1)*(1+0.9)+200; end
也可以輸出1,0.9,0.8,......,0;的10個數(shù),代碼如圖所示。
這是可以的,如: b(1)=2000; for k=2:5 b(k)=b(k-1)+b(k-1)*(1+0.9)+200; end
在使用for循環(huán)的時候,可以使用和if語句來結(jié)合使用,break是結(jié)束循環(huán),代碼:
平行的循環(huán)是可以用同一個 i 的 ,嵌套的不可以 因為平行的循環(huán)里面 ,后面的循環(huán)重新賦值覆蓋了之前的值。 例如 for i=1:3 i end for i=1:4 i end 另外其實matlab里面最好不要用i做循環(huán)變量,因為 matlab里面 i 同時也是單位虛數(shù),這樣在某些情
for ii = 1:5;
實現(xiàn)拼接根本不需要循環(huán),一個語句就夠了(前面load數(shù)據(jù)的部分不變): cat(1,a{:})示例: >> a={magic(3); eye(3); ones(3)}a = [3x3 double] [3x3 double] [3x3 double]>> cat(1,a{:})ans = 8 1 6 3 5 7 4 9 2 1 0 0 0 1 0 0 0 1 1 1 1 1 1 1
if ii == 3;
[ys, xs] = find(A==0); 這樣可以返回兩個列向量xs, ys 分別表示符合要求的點的行數(shù)和列數(shù) 然后 ys(1) xs(1) 這就是第一個符合要求點的坐標 ys(end) xs(end)這就是最后一個符合要求點的坐標
break;
最簡單的語句for i=初值:增量:終值 循環(huán)體 end 一般就是用在需要用到循環(huán)的地方,如累加,累乘等運算,還有搜索,這是用的最多的。 其實我覺得一個程序肯定不能光有for循環(huán)的,但必須承認for循環(huán)可以讓整個程序變得簡單有效。
end
fprintf('ii = %d n', ii);
我也初學者,要不你看看 suzu=cell(20,1); %%%%%%建立一個20*1的元胞結(jié)構(gòu)(每一個就是個數(shù)組) for i=1:20 cell{i}=zeros(4,5); %%%%%在這里不知道你想要什么樣的20個數(shù)組,就建立個4*5的0矩陣 end 每個矩陣通過cell{i}來訪問 如 cell{3}= 0 0 0
end
disp('End of loop!');
把mdl 設(shè)成632行的矩陣,每一行對應y每列的線性回歸結(jié)果。mdl(i,:)=fitlm(a,y)
可以看到輸出結(jié)果1,2,到3的時候結(jié)束循環(huán)輸出End of loop!,如圖所示:
為什么用兩個for循環(huán)得不到作多條直線,其原因是多了一個循環(huán),即 for x=1:100 end完整的代碼應該為clc;close allfor q=-3:3 figure; y=0; x=1:100; y = y + power(x,q) ; plot(x,y); hold on; xlabel('x');ylabel('y')end
也可以在for循環(huán)的時候,使用continue;結(jié)束本次循環(huán),運行結(jié)果如圖所示:
沒必要嘛,用while不就OK了。例如, k = 111111; i = 0; while(i < k) if (need change) k = k + 1; end end
擴展閱讀,以下內(nèi)容您可能還感興趣。
matlab 的for循環(huán)里面,如何把前一次計算的值用于下一次計算?
這是可以的,如:
b(1)=2000;
for k=2:5
b(k)=b(k-1)+b(k-1)*(1+0.9)+200;
end追問b(1)這里的1可以為分數(shù)嗎?
如果不行的話,我想把這個for循環(huán)的結(jié)果繪制一個圖像,但是想把K的值變成原來的1/2,也就是說把這個圖像按比例縮放,應該怎么做……追答b(1)這里的1是腳標索引,不可以為分數(shù),只能是正整數(shù)。
你說的縮放圖像是有一定方法的,不是這個樣子。如:
b(1)=2000;
a=1/2;
for k=2:5
b(k)=a*b(k-1)+a*b(k-1)*(1+0.9)+200;
end
matlab 多個for循環(huán)能不能用同一個i?
平行的百循環(huán)是可以用同一個 i 的 ,嵌套的不可以
因為平行的循環(huán)里度面 ,后面的循環(huán)重新賦值覆蓋了之前問的值。
例如
for i=1:3
i
end
for i=1:4
i
end
另外其實matlab里面最好不要用i做循答環(huán)變量,因為回 matlab里面 i 同時也是單位虛數(shù),這樣在某些情況下容易因混淆而導致邏輯錯誤答
MATLAB中如何用for循環(huán)連續(xù)拼接矩陣?
實現(xiàn)拼接根本不需要循環(huán)來,一個語句就夠源了(前面load數(shù)據(jù)zd的部分不變):
cat(1,a{:})示例:
>> a={magic(3); eye(3); ones(3)}a =
[3x3 double]
[3x3 double]
[3x3 double]
>> cat(1,a{:})
ans =
8 1 6
3 5 7
4 9 2
1 0 0
0 1 0
0 0 1
1 1 1
1 1 1
1 1 1
在matlAB中,用for循環(huán)賦值的問題
[ys, xs] = find(A==0);
這樣可以返回兩個列向量度xs, ys
分別表示符合回要求的點的行數(shù)和列數(shù)
然后
ys(1) xs(1) 這就是第一個符答合要求點的坐標
ys(end) xs(end)這就是最后一個符合要求點的坐標追問為什么我讀取的xs的值 是改點的值的三倍。每個點的擴大了三倍。追答A是三通道矩陣吧?
運行
[r, c, p] = size(A)
看看p是多少
matlab中 for循環(huán)要怎么應用應用在哪個方面
最簡單的語句for i=初值:增量zhidao:終值
循環(huán)體
end
一般就是用在需要用到循環(huán)內(nèi)的地方,如累加,累乘等運算,還有搜索,這是用的最多的。
其實我覺得一容個程序肯定不能光有for循環(huán)的,但必須承認for循環(huán)可以讓整個程序變得簡單有效。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com