假设我有一段返回双精度数组的代码。运行时,在命令窗口返回的结果如下所示:
mpc.gen=
1 100 344 34 5
2 433 223 45 2
3 333 432 12 3
4 213 233 12 3我想要做的是创建一个包含这个数组的MATLAB脚本。换句话说,在这个新的MATLAB脚本中,我将拥有如下数组,构造如下:
mpc.gen= [ 1 100 344 34 5 ;
2 433 223 45 2 ;
3 333 432 12 3 ;
4 213 233 12 3 ;
] ;只需调用函数即可将变量保存在新脚本中,但这并不是我所需要的,因为我需要在一个名为MATPOWER的特殊power工具上使用此脚本进行模拟。该数组需要采用新脚本中所示的形式。
实际数组的大小要大得多,但为了简单起见,我在这里使用它。有没有什么方法可以自动完成这项工作,而不是手动将数据从命令窗口逐个传递到新脚本?任何帮助都将不胜感激。提前感谢您的宝贵时间!
发布于 2018-03-06 04:52:37
您想要使用的是mat2str。它将矩阵转换为字符串表示形式,当计算该字符串表示形式时,会生成相同的矩阵。
例如:
>> result = [1 100 344 34 5;
2 433 223 45 2;
3 333 432 12 3;
4 213 233 12 3];
>> mat2str(result)
ans =
[1 100 344 34 5;2 433 223 45 2;3 333 432 12 3;4 213 233 12 3]您可以将此代码写入文件,如下所示:
f = fopen('test_script.m', 'w');
fprintf(f,'mpc.gen = %s\n', mat2str(result));
fclose(f);格式化与您的示例不完全相同,但是如果该工具能够正确地进行MATLAB解析,那么应该不会有问题。
发布于 2018-03-06 02:20:42
是否有意将mpc定义为结构?(名称中使用了点。)在下面,我使用下划线代替,但如果它是有意的,它肯定可以被采用。
这就是函数的用途。因此,您应该创建一个新函数,而不是编写脚本。如果我做你想做的事情,我会有2个函数和1个脚本。而脚本看起来像这样
mpc_bus = function1;
function2(mpc_bus);其中function1是返回mpc.bus的代码,function2是要使用mpc.gen的代码,顶部如下所示
function [] = function2(mpc_gen)如果您出于某种原因不喜欢函数,可以使用save(*filename*.mat)使第一个代码保存变量,然后使用dat=load(*filename*.mat);和mpc_gen = dat.mpc_bus;在脚本中重新加载该文件
https://stackoverflow.com/questions/49116820
复制相似问题