我想打印一个深色背景和白色标签的MATLAB图形.如果我使用print或saveas命令我失去了某种颜色.绘图符号再次变暗,背景为白色.
points = rand(100,3);
plot3(points(:,1),points(:,2),points(:,3),'*w')
grid on
set(gca,'Color',[0.5 0.5 0.5])
saveas(gcf,'test1','pdf')
saveas(gcf,'test2','png')
print(gcf,'test3.pdf','-dpdf')
Run Code Online (Sandbox Code Playgroud)
所有三个测试文件最终都是错误的.如果我在图形菜单中选择"另存为",我可以正确保存图形.
任何想法如何解决问题?
我在Matlab中遇到了一些内存管理问题.最后它导致没有足够的可用内存和错误.我试图找出问题并找到一个有趣的"功能":不知怎的,我在Matlab中松散了自由内存.
我执行以下操作:
1)启动Matlab
2)键入"memory"我得到:最大可能的数组:1293 mb,所有数组的内存可用:1456 mb
3)我将调用一个函数.功能相当长,因此很难将其粘贴到此处.但基本上它加载5 ca. 300mb mat文件(按顺序),选择一些值并返回它们.返回的矩阵是ca. 1,2mb(4650x35 double)
4)我清除工作区中的所有变量("全部清除")
5)键入"memory"我得到:最大可能的数组:759 mb,所有数组的内存可用:1029 mb
如果我重复步骤3)到5),则存储器编号是恒定的.
那么这里有什么问题?我在哪里可以放松400mb的免费空间?Matlab使用的内存不变,大约为330mb.
有没有人有一些想法在这里有什么问题?或者这是完全自然的东西,但我想念它?
谢谢
托马斯
Ps:我使用Matlab 2010a和Win 7 pro 32bit.
如果我通过matlab使用load函数,我通常最终会做这样的事情:
temp = load('filename.mat');
realData = temp.VarName;
clear temp
Run Code Online (Sandbox Code Playgroud)
要么
realData = load('filename.mat');
realData = realData.VarName;
Run Code Online (Sandbox Code Playgroud)
这种方法中的任何一种都优于其他方法,特别是在内存使用方面?或者是否有更直接的方法来避免这种临时结构?
托马斯
现在我正在进行一些优化,这需要一些时间,我想以一种好的方式保存结果.由于我的代码不断变化,我想将一两个.m文件与结果一起保存.就像我必须要确切地看到我在做什么一样.
所以我理想的情况是:
mFile1 = load('mFile1.m');
results = randn(100,100); %some other variables
save('allResults.mat')
Run Code Online (Sandbox Code Playgroud)
这样所有这些最终都存储在一个文件中.这可能不是超级内存节省,但我认为这对KB值得.
理想情况下
disp(mFile1)
Run Code Online (Sandbox Code Playgroud)
会产生一些易读的输出.
我有什么想法可以解决这个问题?谢谢托马斯
Ps:我也可以使用版本跟踪系统,但我不想这样做,因为它总是需要一些努力才能转到以前的版本.