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

问题描述 投票:0回答:2

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

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

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

arrays matlab
2个回答
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解析,那么它应该不是问题。


0
投票

mpc是一个结构是故意的吗? (你在名字中使用了点。)在下面,我使用下划线,但如果是有意的话,它肯定可以采用。

这就是功能的用途。因此,您应该创建一个新函数,而不是创建脚本。如果我要做你想做的事,我会有2个函数和1个脚本。脚本看起来像这样

mpc_bus = function1;
function2(mpc_bus);

其中function1是返回mpc.bus的代码,而function2是你想要使用mpc.gen的那个,而top将是这样的

function [] = function2(mpc_gen)

或者:如果您因某种原因不喜欢函数,可以使用save(*filename*.mat)创建第一个代码保存变量,然后使用dat=load(*filename*.mat);mpc_gen = dat.mpc_bus;在脚本中再次加载文件

© www.soinside.com 2019 - 2024. All rights reserved.