matlab - 如何打印多个开放图形,如何简化将数据导入 MATLAB

标签 matlab printing import figures

我有两个问题:

  1. 我在 MATLAB 中有大约 12 个开放图形(已由另一个函数生成,图 1 到 12),我想将它们全部打印到文件中,同时也打印到我的打印机中。我该如何编写代码呢?我已经读过有关获取数字句柄的内容,但我并没有真正理解它的含义以及如何在之后打印它们。

  2. 我编写了一个脚本,用于将多个 Excel 文件中的数据导入到 MATLAB。 Excel 文件的命名唯一的区别在于开头部分,其中包括个人(信息所属者)的姓名/代码。

我的脚本如下所示:

Indi1_Sim_T_SFTW1= xlsread('E:\MATLAB\Indi1_Output_SFTW1_6min_100_020812.xls','Indi1_Sim_T_SFTW12')
Indi1_Sim_V_SFTW1= xlsread('E:\MATLAB\Indi1_Output_SFTW1_6min_100_020812.xls','Indi1_Sim_V_SFTW12')

Indi2_Sim_T_SFTW1= xlsread('E:\MATLAB\Indi2_Output_SFTW1_6min_100_020812.xls','Indi2_Sim_T_SFTW12')
Indi2_Sim_V_SFTW1= xlsread('E:\MATLAB\Indi2_Output_SFTW1_6min_100_020812.xls','Indi2_Sim_V_SFTW12')

Indi3_Sim_T_SFTW1= xlsread('E:\MATLAB\Indi3_Output_SFTW1_6min_100_020812.xls','Indi3_Sim_T_SFTW12')
Indi3_Sim_V_SFTW1= xlsread('E:\MATLAB\Indi3_Output_SFTW1_6min_100_020812.xls','Indi3_Sim_V_SFTW12')

Indi4_Sim_T_SFTW1= xlsread('E:\MATLAB\Indi4_Output_SFTW1_6min_100_020812.xls','Indi4_Sim_T_SFTW12')
Indi4_Sim_V_SFTW1= xlsread('E:\MATLAB\Indi4_Output_SFTW1_6min_100_020812.xls','Indi4_Sim_V_SFTW12')

对于许多其他人来说也是如此。

如您所见,我正在为每个人重复该代码。我可以用循环函数来简化它吗?

P.S:所有导入的数据都是数字。

最佳答案

关于项目符号编号。 1:

I have open figures in matlab and I want to print them all to a file, but also to my printer.

您有 print用于此目的的命令。只需指定图形的句柄即可,例如:

print(h)                      %// Send figure with handle h to printer
print(h, '-djpeg', filename)  %// Save figure with handle h to a JPEG file

关于项目符号编号。 2:

... can I simplify it with a loop function?

是的,你可以。你可以这样做:

N = 4; %// Number of Excel files
C = cells(2 * N, 1);
for k = 1:2 * N
    filename = sprintf('E:\MATLAB\Indi%d_Output_SFTW1_6min_100_020812.xls', k);
    C{k} = xlsread(filename, sprintf('Indi%d_Sim_T_SFTW12', k));
    C{k + 1} = xlsread(filename, sprintf('Indi%d_Sim_T_SFTW12', k));
end

现在所有数据都存储在元胞数组 C 中。


说明

我计划将 xlsread 的输出存储在 cell array 中。您有 N 个文件,并且要从每个文件的两个工作表中读取数据,因此元胞数组 C 使用 2 * N 个单元格进行初始化.

for 循环遍历每个文件,并使用命令 sprintf 构造文件名。和迭代计数器k:

filename = sprintf('E:\MATLAB\Indi%d_Output_SFTW1_6min_100_020812.xls', k);

这里的结果存储在变量filename中,并传递给xlsread命令。工作表名称也是使用 sprintf 构建的,并直接传递给 xlsread 而无需先存储在变量中。

问:为什么将文件名存储在变量中而不是工作表名称中?
答:我决定将文件名存储在变量中,只是因为我不想构造两次,而工作表名称只构造一次,因此将每个文件名存储在变量中没有任何意义。

循环结束后,整个数据存储在元胞数组C中。要访问 C 中的第 i 个元素(单元格),请使用大括号 ({})。例如,要访问第二个单元格,请写入 C{2}

问:为什么选择元胞数组? 答:在元胞数组中,每个元胞可以包含不同类型和长度的数据,例如 {2, 'hello'} 是一个包含两个元胞的元胞数组:一个包含数字 2,另一个包含字符串“hello” 。由于您无法保证 xlsread 返回相同长度的数据,因此无法使用简单的矩阵来存储所有文件的内容。

希望这有帮助!

关于matlab - 如何打印多个开放图形,如何简化将数据导入 MATLAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14478267/

相关文章:

jquery - Fancybox - 添加打印功能

MYSQL:导入大数据库时出现问题(非常慢)

java - 为什么 Eclipse 不识别新的 JAR?

python - 在 python 中创建模块范围的记录器是好的设计吗?

image - 在matlab中提取图像的运动模糊

javascript - 如何延迟加载图像并使它们可用于打印

c# - 从 Web 应用程序打印到客户端打印机

r - 在R或Matlab中绘制符号函数

通过引用传递的 MATLAB 函数

arrays - MATLAB:创建 3D 数组,矢量化与循环