当我从MATALB保存图形时,我希望得到的图像具有非常高的分辨率,以便我可以放大以查看图像中的细节.当我在图形上使用"文件 - >另存为"时,图像的分辨率不高.
如何在MATLAB中将图形保存为高分辨率图像?
用于MATLAB 的cvx套件可以解决下面的(看似无辜的)优化问题,但对于我正在使用的大型完整矩阵来说,它相当慢.我希望这是因为使用cvx是过度的,并且问题实际上有一个分析解决方案,或者巧妙地使用一些内置的MATLAB函数可以更快地完成这项工作.
背景:它是公知的,这两个x1=A\b和x2=pinv(A)*b解决最小二乘问题:
minimize norm(A*x-b)
Run Code Online (Sandbox Code Playgroud)
区别于此norm(x2)<=norm(x1).事实上,这x2是解决问题的最小规范解决方案,因此norm(x2)<=norm(x)对于所有可能的解决方案x.
定义D=norm(A*x2-b)(等效D=norm(A*x1-b)),然后x2解决问题
minimize norm(x)
subject to
norm(A*x-b) == D
Run Code Online (Sandbox Code Playgroud)
问题:我想找到解决方案:
minimize norm(x)
subject to
norm(A*x-b) <= D+threshold
Run Code Online (Sandbox Code Playgroud)
换句话说,我不需要norm(A*x-b)尽可能小,只要在一定的容忍范围内.我想最小范数解x的是得到A*x内D+threshold的b.
我无法在网上或手工找到问题的解析解(比如在经典的最小二乘问题中使用伪逆).我一直在搜索诸如"具有非线性约束的最小二乘"和"具有阈值的最小二乘"之类的东西.
任何见解都会非常感激,但我想我的真正问题是:在MATLAB中解决这个"阈值化"最小二乘问题的最快方法是 什么?
当谈到使用哪个渲染器来处理 MATLAB 图形或何时它很重要时,我一无所知,但我遇到过一些确实很重要的示例:
plot(0,0,'ko','markersize',50,'linewidth',8);
set(gcf,'renderer','opengl');
set(gcf,'renderer','painters');
Run Code Online (Sandbox Code Playgroud)
左=OpenGL,右=画家:
(运行 Windows 7 Professional 和 MATLAB R2015b)
有时使用 OpenGL 渲染器会产生比 Painters 更好的结果吗?一般来说,这两个渲染器有何不同?
我正在使用ginputMATLAB中的函数来使用光标来收集图像上的许多x,y坐标.我沿着图像跟踪某个路径并需要放大以获得精确的坐标,但在使用时禁用了放大选项ginput.有关如何解决这个问题的任何想法?
这是我正在使用的非常简单的代码.
A = imread('image1.tif');
B = imshow(A);
[x,y] = ginput;
% at this point i scan the image and click many times, and
% ideally i would like to be able to zoom in and out of the image to better
% aim the cursor and obtain precise xy coordinates
Run Code Online (Sandbox Code Playgroud) matlab ×4
coordinates ×1
cvx ×1
ginput ×1
image ×1
opengl ×1
optimization ×1
save ×1
zooming ×1