我有两个问题:
我在 MATLAB 中有大约 12 个开放图形(已由另一个函数生成,图 1 到 12),我想将它们全部打印到文件中,同时也打印到我的打印机中。我该如何编写代码呢?我已经读过有关获取数字句柄的内容,但我并没有真正理解它的含义以及如何在之后打印它们。
我编写了一个脚本,用于将多个 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/