2014-06-26 32 views
0

我有這個公式:100-[(x-1)/(y-1)]*100,我想在MATLAB中將它應用於單元格類型變量FA rows * 14 columns,其中x = F(:,14)y = size(F,1)在Matlab上應用公式

我一直在嘗試通過不同的嘗試到那裏,這是一個例子,我試過:

F(:,15) = cellfun(@minus, 100, ((cell2mat(F(:,14)-1)./size(F,1)) * 100)); 

但它無法正常工作。有人能幫助我嗎?

+0

不工作爲什麼?任何錯誤? – Marcin

+0

'cellfun'適用於** cell **陣列。通過應用'cell2mat',你可以將'cell'數組轉換回**矩陣**。因此,輸入'cellfun'不再是'cell' array – rayryeng

回答

2

假設我正確地理解這一點,首先讓我展示瞭如何做到這一點,你所描述的方法:

% a random cell array of 10 rows x 5 columns 
% each cell contains one number 
F = num2cell(rand(10,5)); 

% compute formula on 1st column. Result is a numeric vector 
out = 100 - ((cell2mat(F(:,1))-1) ./ size(F,1))*100; 

% put result back into cell array (by converting into expected format) 
F(:,5) = num2cell(out); 

現在既然F是一個單元陣列簡單地包含一個標數它的每一個細胞,爲什麼不你不是隻用一個regaular 數字矩陣嗎?這樣你就避免了來回撥打cell2matnum2cell ......

+0

謝謝你的幫助! F是一個單元格數組,但它不包含標量數字,它也有char。字符串。我的'x'(你的'F(:,1))'雖然是一個數字!我一直在申請'cell2mat',也許這就是爲什麼我也在這裏嘗試過,但我可以嘗試沒有! – user3557054

+0

嘿!我只是嘗試了你的配方,它的工作完美。我不知道那是你以前的觀點,但我不需要熟悉'F = num2cell(rand(10,5));'它的工作原理!真的很好:)謝謝 – user3557054

+0

有沒有辦法做到這一點,而無需轉換爲墊子,然後到細胞? –