| 8 | 1/1 | 返回列表 |
| 查看: 1678 | 回復(fù): 7 | ||||
[求助]
matlab循環(huán)計(jì)算轉(zhuǎn)為矩陣 30金幣求助
|
|
程序是用來做菲涅爾積分的,由于程序運(yùn)算時(shí)間太長(zhǎng),因此想把最耗時(shí)的兩重for循環(huán)運(yùn)算部分改為矩陣運(yùn)算形式,但沒找到合適的方法,循環(huán)中運(yùn)行的語句本身就是一個(gè)矩陣運(yùn)算,想請(qǐng)教各位怎么改成完全矩陣運(yùn)算的程序。 X1=-22e-3; X2=22e-3; Y1=-22e-3; Y2=22e-3; Num0=128; [x,y]=meshgrid(X1 X2-X1)/(Num0-1):X2,Y1 Y2-Y1)/(Num0-1):Y2);for i=1:Num0 x1=x(1,i); for j=1:Num0 y1=y(j,1); Fij=Fun2.*exp(sqrt((x1-x).^2+(y1-y).^2)); %Fun2是一個(gè)矩陣函數(shù) Fun3(i,j)=sum(sum(Fij)); end end |
銅蟲 (小有名氣)
你好。關(guān)于兩個(gè)循環(huán),實(shí)在是想不出什么好的方法,主要是求各個(gè)點(diǎn)到其它點(diǎn)的距離這一項(xiàng),試了總是不行。![]() 但如果你確定是用這一組X1,X2,Y1,Y2,就可以偷下懶。 我的程序暫時(shí)以Num0=8為例進(jìn)行說明。只要X關(guān)于點(diǎn)對(duì)稱,Y關(guān)于點(diǎn)對(duì)稱,就好辦。 你的F3是一個(gè)大的對(duì)稱的矩陣。我們只要生成這個(gè)矩陣的1/8.通過轉(zhuǎn)置,翻轉(zhuǎn)等操作(matlab對(duì)矩陣的運(yùn)算還是挺快的。),可以生成Fun3。 當(dāng)Num0=8的時(shí)候,兩層循環(huán)比較好。 Elapsed time is 0.000551 seconds. Elapsed time is 0.012936 seconds. 當(dāng)Num0=32的時(shí)候,兩種方法差不多。 Elapsed time is 0.063168 seconds. Elapsed time is 0.021089 seconds. 當(dāng)Num0=128的時(shí)候,偷懶的方法要好些,可能是Num0越大,效果越好,但應(yīng)該是有上限的,這要看你的內(nèi)存值(用空間換時(shí)間就是)。 Elapsed time is 8.402686 seconds. Elapsed time is 0.986670 seconds. clear all clc % X1=-22e-3; % X2=22e-3; % Y1=-22e-3; % Y2=22e-3; % different X,Y X1=-20e-3; X2=20e-3; Y1=-21e-3; Y2=21e-3; Num0=128;% u can change it for 8,32 64 and 128 tm_lu=zeros(Num0/2,Num0/2); tm_lu=zeros(Num0/2,Num0); tmp =zeros(Num0,Num0); Fun2=1; x_l=X1 X2-X1)/(Num0-1):X2;y_l=Y1 Y2-Y1)/(Num0-1):Y2;[x,y]=meshgrid(x_l,y_l); %% your way tic for i=1:Num0 x1=x_l(i); for j=1:Num0 y1=y_l(j); Fij=Fun2.*exp(sqrt((x1-x).^2+(y1-y).^2)); %Fun2是一個(gè)矩陣函數(shù) F3(i,j)=sum(Fij( );end end toc %% tic for i=1:Num0/2 x1=x_l(i); for j=1:i y1=y_l(j); Fij=Fun2.*exp(sqrt((x1-x).^2+(y1-y).^2)); %Fun2是一個(gè)矩陣函數(shù) tm(i,j)=sum(Fij( );end end tm_lu=tm+tm'-tril(tm'); tm_u=[tm_lu,flipud(tm_lu)']; F4=[tm_u;flipud(tm_u)]; toc % modified on : 22-Nov-2012 19:11:35 % typed by : m |

銅蟲 (小有名氣)

銀蟲 (小有名氣)
榮譽(yù)版主 (著名寫手)
彩色掛圖
![]() |
專家經(jīng)驗(yàn): +2 |
|
菲涅爾積分用 c1=mfun('FresnelC',x) s1=mfun('FresnelS',y) 計(jì)算,詳細(xì)的你可以看看網(wǎng)上的一個(gè)算法,應(yīng)該會(huì)快些的 http://wenku.baidu.com/view/76f633c29ec3d5bbfd0a74fd.html |

| 8 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 材料求調(diào)劑 一志愿哈工大總分298分,前三科223分 +7 | dongfang59 2026-03-27 | 7/350 |
|
|---|---|---|---|---|
|
[考研] 303求調(diào)劑 +7 | DLkz1314. 2026-03-30 | 7/350 |
|
|
[考研] 環(huán)境工程 085701,267求調(diào)劑 +7 | minht 2026-03-29 | 7/350 |
|
|
[考研] 085600,專業(yè)課化工原理,320分求調(diào)劑 +5 | 大饞小子 2026-03-29 | 5/250 |
|
|
[考研] 26考研-291分-廈門大學(xué)(085601)-柔性電子學(xué)院材料工程專業(yè)求調(diào)劑 +5 | min3 2026-03-24 | 6/300 |
|
|
[考研] 334分 一志愿武理 材料求調(diào)劑 +16 | 李李不服輸 2026-03-26 | 16/800 |
|
|
[考研] 310求調(diào)劑 +10 | 爭(zhēng)取九點(diǎn)睡 2026-03-30 | 10/500 |
|
|
[考研] 求調(diào)劑 +7 | 青春裁為三截 2026-03-29 | 7/350 |
|
|
[考研] 332求調(diào)劑 +6 | Lyy930824@ 2026-03-29 | 6/300 |
|
|
[考研] 調(diào)劑310 +12 | 溫柔的晚安 2026-03-25 | 13/650 |
|
|
[考研] 298求調(diào)劑 +3 | 種圣賜 2026-03-29 | 3/150 |
|
|
[考研] 086000生物與醫(yī)藥調(diào)劑 +5 | Feisty。 2026-03-28 | 9/450 |
|
|
[考研] 一志愿華理,數(shù)一英一285求A區(qū)調(diào)劑 +8 | AZMK 2026-03-25 | 12/600 |
|
|
[考研] 調(diào)劑 +3 | 好好讀書。 2026-03-28 | 3/150 |
|
|
[考研] 352分 化工與材料 +5 | 海納百川Ly 2026-03-27 | 5/250 |
|
|
[考研] 085600,材料與化工321分調(diào)劑 +4 | 大饞小子 2026-03-27 | 6/300 |
|
|
[考研] 085601 材料工程 313分 求調(diào)劑 +5 | Ong3 2026-03-27 | 5/250 |
|
|
[考研] 機(jī)械學(xué)碩總分317求調(diào)劑。。! +4 | Acaciad 2026-03-25 | 4/200 |
|
|
[考研] 302求調(diào)劑 +4 | 錦衣衛(wèi)藤椒 2026-03-25 | 4/200 |
|
|
[考研] 080500求調(diào)劑 +3 | zzzzfan 2026-03-24 | 3/150 |
|