我有一個適用於函數的數組I = 6100x6300x72
,結果Icor
包含一些我想用零替換的負值。雖然這是一個很多問題,但在我的情況下,內存限制使得任務變得更加困難。就拿例如:MATLAB邏輯索引RAM約束;解決方法嗎?
I=rand(6100,6300,72); %# example size of I
[x,y,z]=size(I); %# get the dimensions for later reshaping
I=reshape(I,x*y,z); %# reshape to columns
Icor=function(I) %# apply a function to I, result Icor
Icor(Icor < 0)=0; %# Icor has negatives which need removing
Icor=reshape(Icor,x,y,z); %# reshape back to same size as I (original size)
我的問題就出在邏輯索引步驟,Icor(Icor < 0)=0;
,這是我的RAM馬克塞斯。有沒有創造性的方法呢? (或者如果我錯過了一些非常明顯的東西,請原諒我)。
如何清除原始副本'我'出來(清除'I')?那麼,如何提取'Icor'的子集並逐個處理它們呢? – Acorbe
或者重寫'function'來返回'0'而不是一個負數,使'Icor(Icor <0)= 0'這個步驟變得多餘? –
我試過清除'I'的原始副本,但它仍然存在錯誤。也許一個循環刪除'Icor'矢量列零的循環,然後重塑可能是解決方案 – MBL