考虑到我有一个返回双数组的代码。运行时,在命令窗口返回的结果结果如下所示:
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的特殊电动工具上进行模拟。数组需要采用新脚本中显示的形式。
实际的数组大小要大得多,但为了简单起见,我在这里使用它。有什么方法可以自动执行此操作,而不仅仅是手动将命令窗口中的数据逐个传递给新脚本?任何帮助将不胜感激。提前感谢您的时间!
答案 0 :(得分:1)
您要使用的是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解析,那么它应该不是问题。
答案 1 :(得分:0)
有意mpc
是一个结构吗? (你在名字中使用了点。)在下面,我使用下划线,但如果是有意的话,它当然可以采用。
这就是函数的用途。因此,您应该创建一个新函数,而不是创建脚本。如果我要做你想做的事,我会有2个函数和1个脚本。脚本看起来像这样
mpc_bus = function1;
function2(mpc_bus);
其中function1
是返回mpc.bus
的代码,而function2
是您要使用mpc.gen
的代码,而top应该是这样的} p>
function [] = function2(mpc_gen)
或者:如果您由于某种原因不喜欢功能,可以使用save(*filename*.mat)
使第一个代码保存变量,然后您可以使用{在脚本中再次加载文件{1}}和dat=load(*filename*.mat);