第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

變量似乎在每次循環(huán)迭代時(shí)改變大小 - 什么?

變量似乎在每次循環(huán)迭代時(shí)改變大小 - 什么?

變量似乎在每次循環(huán)迭代時(shí)改變大小 - 什么?在編寫以下Matlab代碼時(shí):for ii=1:n     x(ii) = foo( ii ); % foo is some function of ii that cannot be vectorized.end我得到以下m-lint警告:變量x似乎在每次循環(huán)迭代時(shí)改變大小我的問題:這個(gè)警告意味著什么?為什么每次迭代都會(huì)改變變量大小是件壞事?怎樣才能解決這個(gè)問題?這個(gè)問題是不能重復(fù)的這一個(gè),因?yàn)樗c預(yù)分配的更一般的問題,而是它的一個(gè)特定實(shí)例涉及。
查看完整描述

3 回答

?
12345678_0001

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

我的回答有點(diǎn)遲了,但我在MATLAB中提到了有關(guān)數(shù)組增長(zhǎng)和預(yù)分配的一些內(nèi)容。

首先要注意的是,MATLAB在最近的版本中已經(jīng)大大提高了自動(dòng)陣列增長(zhǎng)性能,因此如果你做得正確,警告所暗示的性能可能不會(huì)太差(見下文)。不過,最佳做法是預(yù)先分配您的數(shù)組(例如zeros)。

警告說明

自R2014a起,警告的詳細(xì)說明如下:

指示的變量或數(shù)組的大小似乎隨著每次循環(huán)迭代而改變。通常,出現(xiàn)此消息是因?yàn)閿?shù)組通過賦值或連接而增長(zhǎng)。通過分配或連接來增長(zhǎng)陣列可能很昂貴。對(duì)于大型數(shù)組,MATLAB必須分配一個(gè)新的內(nèi)存塊,并在進(jìn)行每次賦值時(shí)將較舊的數(shù)組內(nèi)容復(fù)制到新數(shù)組中。

以這種方式改變變量大小的程序可以將大部分運(yùn)行時(shí)間花在這種低效的活動(dòng)上。...

從這個(gè)摘錄中可以清楚地看出,如果你完全關(guān)注性能,預(yù)分配是一個(gè)聰明的想法。

旁注:關(guān)于在陣列增長(zhǎng)期間用于重新分配的算法的信息有限,但是一些信息是由Steve Eddins在同一篇博客文章中提供的,我在前面的答案對(duì)此進(jìn)行了總結(jié)。

自動(dòng)陣列增長(zhǎng)優(yōu)化

如果要通過沿維度增長(zhǎng)(不預(yù)分配)來使用動(dòng)態(tài)數(shù)組大小調(diào)整,則可以采用正確的方法。請(qǐng)參閱Steve Eddins撰寫的MathWorks博客文章。最重要的是要注意你應(yīng)該沿著最后一個(gè)維度增長(zhǎng)以獲得最佳性能。在您的情況下這不是問題,因?yàn)閿?shù)組是1D。因此,如果您決定讓它騎行,請(qǐng)%#ok<SAGROW>在罪魁禍?zhǔn)状a之后與警告放在同一行,以使警告靜音。

Yair 在他博客的另一篇文章中討論了動(dòng)態(tài)數(shù)組調(diào)整大小。此外,有一些方法可以在不使用一些毛茸茸的MEX API雜技進(jìn)行初始化的情況下分配數(shù)組,但就是這樣。

預(yù)分配

建議進(jìn)行預(yù)分配。養(yǎng)成習(xí)慣,學(xué)會(huì)愛zeros。如果你決心從MATLAB中擠出一點(diǎn)性能,Yair Altman就內(nèi)存預(yù)分配這個(gè)主題提出了幾篇很好的文章:


查看完整回答
反對(duì) 回復(fù) 2019-07-30
  • 3 回答
  • 0 關(guān)注
  • 1516 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)