将MATLAB数值数组的结果导入新的MATLAB脚本

时间:2018-03-05 18:07:47

标签: arrays matlab

考虑到我有一个返回双数组的代码。运行时,在命令窗口返回的结果结果如下所示:

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的特殊电动工具上进行模拟。数组需要采用新脚本中显示的形式。

实际的数组大小要大得多,但为了简单起见,我在这里使用它。有什么方法可以自动执行此操作,而不仅仅是手动将命令窗口中的数据逐个传递给新脚本?任何帮助将不胜感激。提前感谢您的时间!

2 个答案:

答案 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应该是这样的

function [] = function2(mpc_gen)

或者:如果您由于某种原因不喜欢功能,可以使用save(*filename*.mat)使第一个代码保存变量,然后您可以使用{在脚本中再次加载文件{1}}和dat=load(*filename*.mat);