【问题标题】:How to execute text made using sprintf as code in MATLAB?如何在 MATLAB 中执行使用 sprintf 作为代码生成的文本?
【发布时间】:2013-12-23 11:03:11
【问题描述】:

我有一些代码可以对电话号码进行一系列傅立叶变换。现在我正在将电话号码分成块,但我希望它适用于任意数量的块。

以下代码是我希望 MATLAB 执行的,但 sprintf 只打印它,有什么方法可以执行这个打印的文本,还是我应该使用不同的函数而不是 sprintf?

output = 'block%d = data(blockstartend(%d, %d):blockstartend(%d, %d));\n';
a2 = [];
for i = 1: j
    a2(1, i) = i;
    a2(2, i) = i;
    a2(3, i) = 1;
    a2(4, i) = i;
    a2(5, i) = 2;
end
a = sprintf(output, a2)

a =

block1 = data123(blockstartend(1, 1):blockstartend(1, 2));
block2 = data123(blockstartend(2, 1):blockstartend(2, 2));
block3 = data123(blockstartend(3, 1):blockstartend(3, 2));
block4 = data123(blockstartend(4, 1):blockstartend(4, 2));
block5 = data123(blockstartend(5, 1):blockstartend(5, 2));
block6 = data123(blockstartend(6, 1):blockstartend(6, 2));
block7 = data123(blockstartend(7, 1):blockstartend(7, 2));
block8 = data123(blockstartend(8, 1):blockstartend(8, 2));
block9 = data123(blockstartend(9, 1):blockstartend(9, 2));
block10 = data123(blockstartend(10, 1):blockstartend(10, 2));

【问题讨论】:

    标签: matlab arguments execute printf variadic


    【解决方案1】:

    您可能想使用eval,尽管通常不建议这样做。

    为什么不改为执行以下操作?

    block = cell(10,1);
    for k = 1:10
       block{k} = data123(blockstartend(k, 1):blockstartend(k, 2));
    end
    

    【讨论】:

    猜你喜欢
    • 2016-08-30
    • 1970-01-01
    • 2016-03-25
    • 2021-05-13
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    相关资源
    最近更新 更多