1.matlab 中如何把x轴坐标值设置成斜体?
2.matlab读取fds文件
3.MATLAB联合绘制条形图、误差棒图、线图并改属性
4.如何用matlab确定十字激光中心光斑的位置,急求,望好心...
5.Octave/Matlab复数矩阵sinc插值高性能版
matlab 中如何把x轴坐标值设置成斜体?
matlab中设置x轴坐标值为斜体的方法为:将坐标轴刻度的 Fontangle 属性设置为 italic,关键代码为:>> set(gca,摇头灯源码'Fontangle','italic'),效果如下图所示:此外,如果要设置x轴标题为斜体,可以使用Latex语法 \it 设置:
>> xlabel('\it your-x-title')
matlab读取fds文件
一般matlab里的读取都是txt文件,麻烦一点的有的用excel,毕竟是数据处理的软件嘛。我觉得你这个图形文件最好能转成txt格式的,一定是有方法转的。
转完了放在matlab就很容易。
方法如下:
首先,你备份文件,源码报价比例确定格式为,.txt。
然后我们用传统的方法在matlab你面读取你的txt。
尝试这个程序:
M= gallery('integerdata', , [5 8], 0);
dlmwrite('myfile.txt', M, 'delimiter', '\t')
D=dlmread('myfile.txt')
第一行是我生成的一个矩阵,然后第二行我写入到文件'myfile.txt'。
这就模拟了你的.dat文件, 改成.txt之后的样子。
你在程序第一行写
D=dlmread('myfile.txt')
就读取了文件。并把读取的,写入到了D矩阵中。
结果如下:
你可以尝试一下。
希望解决了你的疑惑,谢谢。
MATLAB联合绘制条形图、误差棒图、200102131的源码线图并改属性
本文基于MATLAB,利用月的ninoz数据,将条形图(bar),误差棒图(errorbar),线图(plot)绘制在一起,并且任意改变其颜色和改变坐标轴大小、标识等属性。
第一,启动MATALB,新建脚本(Ctrl+N),输入如下代码: close all;clear all; clc figure('Name','Monthly Ninoz','Position',[,,,]) time=1:1:; ninoz=[0.,0.,0.,0.,-0.1,-0.,... -0.,-0.,-0.,-0.,-0.,-0.,... -0.,-0.,0.,0.,0.,0.,]; variance=[0.,0.,0.,0.,0.,0.,... 0.,0.,0.,0.,0.,0.,... 0.,0.,0.,0.,0.,0.]; bar(time,ninoz);hold on;bar(time(1:4),ninoz(1:4),'r'); bar(time(5:),ninoz(5:),'g'); bar(time(:),ninoz(:),'w'); 其中ninoz有个月的平均值,variance是个月相应的方差值。 bar( )是绘制条形图。需要注意的是ninoz和variance数据是制(编)造(的)。
第二,ddx网站源码保存和运行上述脚本,得到如下图形。
第三,接着在编辑区输入如下代码: errorbar(time(:),ninoz(:),variance(:),'b',... 'LineWidth',1);plot(time(:),ninoz(:)+variance(:),'k',... 'LineWidth',2);plot(time(:),ninoz(:)-variance(:),'k',... 'LineWidth',2);hold off; 其中errobar是绘制误差棒图,plot是绘制线图。
第四,保存和运行上述增加后的脚本,得到如下图形。
第五,对上述图形进行一些修饰,接着输入如下代码: set(gca,'FontSize',,'TickDir','out',... 'XTick',[0:2:],'YTick',[-2:0.5:2],... 'TickLength',[0.,0.])set(gca,'XTickLabel',{ 'Feb','Apr','Jun','Aug','Oct',... 'Dec','Feb','Apr','Jun','Aug','Oct'}) xlabel('Months');ylabel('Ninoz'); axis([0,,-2,2]) 其中前两个set(gca,...)是改变坐标轴的字体大小,标识范围和标识内容等,xlable,ylabel是添加坐标轴的名称,axis([ ])是墨香源码说明设置坐标轴的范围。
第六,最后保存和运行上述最终脚本,得到如下图形。
如何用matlab确定十字激光中心光斑的位置,急求,望好心...
如何用matlab确定十字激光中心光斑的位置,急求,望好心...
matlab图像处理确定激光光斑的中心的详细过程和算法
个不难的:
- 图像预处理,自动阀值方法二值化,然后滤掉噪声点,得到比较干净的圆形光斑离散点集;
- 用以下这个程序拟合出离散点的圆,并找出圆心。
其中第一步的自动阀值可以用otsu函数(otsu method,大津法),其余都很基础;第二步的程序如果看不懂,可以进一步看看参考资料连接。
function [xc,yc,R,a] = circfit(x,y)
%
% [xc yx R] = circfit(x,y)
%
% fits a circle in x,y plane in a more accurate
% (less prone to ill condition )
% procedure than circfit2 but using more memory
% x,y are column vector where (x(i),y(i)) is a measured point
%
% result is center point (yc,xc) and radius R
% an optional output is the vector of coeficient a
% describing the circle's equation
%
% x^2 y^2 a(1)*x a(2)*y a(3)=0
%
% By: Izhak bucher /oct /,
x=x(:); y=y(:);
a=[x y ones(size(x))]\[-(x.^2 y.^2)];
xc = -.5*a(1);
yc = -.5*a(2);
R = sqrt((a(1)^2 a(2)^2)/4-a(3));
参考资料:
匿名 �0�2<span class="tm">4- :</span>
</p>
<div>
<div class="ra ft"><div class="bt bg1"><img alt="相关内容" class="m" height="" src="/static/img/ico3.gif" width=""/>相关内容</div></div>
<p class="ft">
Octave/Matlab复数矩阵sinc插值高性能版
本文以C/C++(Oct/Mex)技术实现Octave/Matlab的sinc插值,通过OpenMP并行、原位运算、查表法、同一插值点的sinc的分子变号处理、临近点免插值等方法,在保证精度足够的前提下,实现高速sinc插值,支持高维矩阵按页插值。
一 背景介绍
原位(In-place)运算即在原处进行运算,对于大规模矩阵运算可以提高运行速度,节约内存I/O时间和需求。SAR成像和运补常用sinc插值,本文以sinc插值为例,介绍如何省内存、最快地实现Octave或Matlab下C/C++语言oct/mex的文件编写。众所周知,Octave/Matlab的for循环速度慢,局部代码用C/C++来写可以有效解决效率问题,但如果不用原位运算,传输矩阵到C/C++、扩展内存、复制矩阵的时间可能就比运算效率提升节约的时间还多。由于Octave Oct/Matlab Mex大多没有关于原位运算的示范,而如果不采用原位运算,在执行代码时会隐式或自行显示地复制矩阵,对于数据规模大的情况不合适,因此研究了如何原位运算sinc插值,在此分享。此外,尽管非均匀采样理论上不适用sinc插值,但对于非均匀性不高时仍然是有效的,因此代码也提供了非均匀插值均匀的功能。由于对整体插值时插值核的和区别可以忽略,因此没有做归一化。
Matlab自a起,复数矩阵的存储改成同Octave的实虚交替的存储方式,以complex矩阵为例,如果一个矩阵是:
x=[1+1.5j 3+3.5j; 2+2.5j 4+4.5j];
那么对于Octave或Ra及以后的Matlab,在内存中存储为一个数组:
1 > 1.5 > 2 > 2.5 > 3 > 3.5 > 4 > 4.5
对于之前版本的Matlab,在内存中存储为两个数组:
1 > 2 > 3 > 4
1.5 > 2.5 > 3.5 > 4.5
如在Octave Mex/Matlab Ra后使用mxGetPr mxGetPi获取传入复数矩阵的实部和虚部,Octave/Matlab将获取第一种存储方式的实部和虚部,复制一份以第二种方式临时存储供mex使用,因此增加了一倍的数据存储。在C里的任何修改对Octave/Matlab存储没有影响,计算结果需要用输出变量传出,整个过程需要至少2倍的原数据规模。采用实部虚部分离的方式可以进行原位运算,但由于Octave/新版Matlab实部虚部在内存中是交替的,提取实部虚部同样增加了可观的内存I/O时间和额外占用。最合适的办法是使用Octave的Oct接口或Matlab新版的C API接口,对于Matlab即使用mxGetComplexSingles取代mxGetPr和mxGetPi,然后进行原位运算。
二 代码示例
Octave的代码保存为 interp_sinc.cc,Matlab的代码保存为interp_sinc.c:
三 编译使用
编译器安装:
·Linux:使用系统GCC/G++
·Windows Octave:Octave自带编译器
·Windows Matlab:github.com/skeeto/wdevkit/releases下载 wdevkit-mini-x.xx.x.zip解压至C:\wdevkit
编译:
·Octave:
CFLAGS='-Ofast -fmath-errno -fno-finite-math-only -fno-associative-math -s -pipe -fopenmp -Wall';
mkoctfile(CFLAGS,'interp_sinc_c.cc');
·Matlab:
CFLAGS='-Ofast -fmath-errno -fno-finite-math-only -s -pipe -fopenmp -Wall';
setenv('MW_MINGW_LOC','C:\wdevkit');
mex(['-setup:',matlabroot,'\bin\win\mexopts\mingw.xml']);
mex(['CFLAGS="$CFLAGS ',flag,'"'],['LDFLAGS="$LDFLAGS ',CFLAGS,'"'],'-Ra','interp_sinc_c.c');
使用:
Octave/Matlab调用方式如下,以沿着行插值,插值点数点为例,s矩阵是原信号,coor为插值坐标,完成后s矩阵即为插值后的数据,不需要interp_sinc函数给变量赋值,为节约内存加快速度,s、coor均为单精度格式。
interp_sinc(s,coor,1,,1,2);
测试样例: