2013-04-09 67 views
1

我需要將其轉換爲Matlab代碼,並且我沒有「表」功能掙扎。Mathematica表函數到Matlab

Table[{i,1000,ability,savingsrate,0,RandomInteger[{15,30}],1,0},{i,nrhhs}]; 

所以基本上,這些值都只是數字,我想我需要使用的功能句柄,或者一個for循環。我不是專家,所以我真的需要一些幫助?

+4

請考慮MATLAB用戶可能沒有Mathematica。描述你的輸入數據和你期望的輸出。你可以提供一些截圖。 – yuk 2013-04-09 20:39:26

+0

對不起。昨天我發表評論時,我已經很累了。我真的不明白Mathematica中的表函數是什麼 - 我試圖將Mathematica的代碼轉換爲Matlab。我認爲,它只是創建一個尺寸矩陣(6 x nrhhs)。然後,使用i,您可以模擬矩陣隨着時間的推移創建一系列輸出。 – user2263478 2013-04-10 11:35:35

+0

這真的不能回答,不知道什麼能力和儲蓄。 – agentp 2013-04-17 11:23:05

回答

0

我不是數學專家(很久以前就用過它)。根據該documentation爲表功能,使用的是這種形式:

表[EXPR,{I,IMAX}]

當i從1到imax的生成expr的值的列表。

它看起來像你的語句將產生列表複製列表中的第一個參數,從1提高到inrhhs使用不同的隨機數。

在MATLAB中,輸出可以等同於矩陣或單元陣列。

要創建行作爲你的列表一個矩陣,你可以這樣做:

result = [ (1:nrhhs)', repmat([1000,ability,savingsrate,0],nrhhs,1), ... 
      randi([15 30],nrhhs,1), repmat([1,0],nrhhs,1) ]; 

您可以將上述矩陣轉換爲一個單元陣列:

resultcell = cell2mat(result, ones(nrhhs,1)); 
0

「表」例如你給創建一個nrhhs子列表,每個子列表包含8個數字(i,1000,ability,savingsrate,0,一個介於15和30之間的隨機整數,1和0)。這基本上(儘管不完全)與nrhhs×8矩陣相同。

假設你只想要一個矩陣出來,不過,類似在Matlab的循環將是:

result = zeros(nrhhs,8); % preallocate memory for the result 
for i = 1:nrhhs 
    result(i,:) = [i 1000 ability savingsrate 0 randi([15 30]) 1 0]; 
end 

這種方法可能比議員的答案(這使得更有效地利用載體,以避免慢for循環),但根據你對Matlab的熟悉程度,可能會更容易分開。