【问题标题】:Mathematica Table function to MatlabMathematica 表函数到 Matlab
【发布时间】:2013-04-09 20:17:46
【问题描述】:

我需要将其转换为 Matlab 代码,并且在没有“表格”功能的情况下苦苦挣扎。

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

所以基本上,这些值都只是数字,我想我需要使用函数句柄,或者可能是 for 循环。我不是专家,所以我真的需要帮助吗?

【问题讨论】:

  • 请注意 MATLAB 用户可能没有 Mathematica。描述您的输入数据以及您期望的输出。您可以提供一些屏幕截图。
  • 对不起。昨天我离开这条评论时,我累坏了。我真的不明白 Mathematica 中的表函数是做什么的 - 我正在尝试将代码从 Mathematica 转换为 Matlab。我认为,它只是创建一个具有维度(6 x nrhhs)的矩阵。然后,使用 i,您可以模拟矩阵以随时间创建一系列输出。
  • 不知道什么是能力和储蓄率真的无法回答。

标签: matlab function loops wolfram-mathematica


【解决方案1】:

我不是数学专家(很久以前才用过)。根据这个documentation for Table 函数,您正在使用这种形式:

表[expr, {i, imax}]

当 i 从 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));

【讨论】:

    【解决方案2】:

    您给出的“表格”示例创建了一个 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 的熟悉程度,可能更容易区分。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多