我需要将其转换为Matlab代码,并且在没有“table”函数的情况下挣扎。
Table[{i,1000,ability,savingsrate,0,RandomInteger[{15,30}],1,0},{i,nrhhs}];
基本上,这些值都只是数字,我想我需要使用函数句柄,或者可能是for循环。我不是专家,所以我真的需要一些帮助吗?
答案 0 :(得分:0)
我不是数学专家(很久以前就用过了)。根据Table函数的documentation,您使用的是以下形式:
表[expr,{i,imax}]
当我从1运行到imax时,生成expr值的列表。
看起来你的语句会产生一个列表,在第一个参数中将列表复制i
从1增加到nrhhs
并使用不同的随机数。
在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));
答案 1 :(得分:0)
您给出的“表格”示例创建了一个nrhhs子列表列表,每个子列表包含8个数字(i,1000,能力,储蓄率,0,15到30之间的随机整数,包括1和0) 。这基本上(尽管不完全)与nrhhs x 8矩阵相同。
假设你只想要一个矩阵,那么Matlab中的类似for循环将是:
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
这种方法可能比yuk的答案慢(这样可以更有效地使用向量来避免for循环),但根据你对Matlab的熟悉程度,可能会更容易分开。