• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Matlab使用技巧

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

(1) Matlab强制退出正在运行的程序
A: Ctrl + C
(2)如何让Matlab跑完程序后自动关机?
A: 在程序的末尾加上一条代码:
    system(\'shutdown -s\')
   当然,记得在这条语句前加上保存结果的save,不然跑了很久的程序就白跑了。 

(3) Matlab创建文件夹实例
A:  help exist查看下exist函数的用法
    示例: if exist(\'results\')~=7
            mkdir(\'result\')
          end
(4) Matlab中使用动态变量名
A: 编写程序时经常会遇到处理大量数据文件的情况,数据文件的命名比较相似,以一系列编号区分,如“a1.mat,a2.mat,... ,a100.mat " (假设其中的数据名称也为a1...a100) 。为了可以批量处理这些文件,可以采用如下的方法:
   for i=1:1:100
       s=strcat(\'a\', int2Str(i));
       load(strcat(s,\'.mat\'));
       x=eval(s); %将数据a1赋值给x,便于后继统一处理
       % ...          %统一处理程序   
   end
为动态变量名赋值示例

   for i=1:10
       eval([\'A\',num2str(i),\'=rand(1,i)\']);
   end
动态调用A1~A10
可以使用cell数组,因为A1-A10是长度不同的向量。
   for i=1:10
       B{i}=eval([\'A\',num2str(i)]);
   end
(5) 通过命令行运行matlab带参函数
在命令行输入
   matlab -r "functionanme firstpara secondpara"
注意事项:引号不能少;functionname不包含「.m」后缀
(6) 怎么判定一个文件或者文件夹是否存在
if isequal(exist(filename,\'file\'),2)   %2 means it\'s a file
if isequal(exist(pathname,\'dir\'),7)    %7 means it\'s a directory
(7)Matlab中用图片制作小电影
方法:使用VideoWriter()类
%% Movie Test.
%% Set up some function. 
% Sine between -2*pi and 2*pi.
x = (10*-pi:0.1:10*pi)\'; % Note the transpose.
y = sin(x);
fid = figure;
hold on
% The final plot.
plot(x,y, \'*\'); 
%% Set up the movie.
writerObj = VideoWriter(\'out.avi\'); % Name it.
writerObj.FrameRate = 60; % How many frames per second.
open(writerObj);  
for i=1:size(y)      
    % We just use pause but pretend you have some really complicated thing here...
    pause(0.1);
    figure(fid); % Makes sure you use your desired frame.
    plot(x(i),y(i),\'or\'); 
    %if mod(i,4)==0, % Uncomment to take 1 out of every 4 frames.
        frame = getframe(gcf); % \'gcf\' can handle if you zoom in to take a movie.
        writeVideo(writerObj, frame);
    %end 
end
hold off
close(writerObj); % Saves the movie.
(8) Matlab计算L2欧氏距离
Matlab内置函数pdist2(p1,p2,\'euclidean\')
可以计算一个点和一组点的距离。示例:
% Define our points.
aPoint = [1,4]; % A single point with 2 components.
bunchOfPoints = [2,3; 1,4; 0,1]; % A bunch of other points. 
d = pdist2(aPoint,bunchOfPoints,\'euclidean\') 
(9) Matlab如何计算均方误差root-mean-square-error
函数rms
% The actual values that we want to predict.
Actual = [1 2 3 4]; 
% The values we actually predicted.
Predicted = [1 3 1 4]; 
% One way is to use the Root Mean Square function and pass in the "error" part.
rmse = rms(Predicted-Actual)
(10) Matlab计算平均绝对误差mean-absolute-error

函数mae
% The actual values.
Actual = [1 2 3 4]; 
% The values we predicted.
Predicted = [1 3 1 4];  
% You can just use the built in Mean Absolute Error function and pass in the "error" part.
builtInMAE = mae(Actual-Predicted)
(11) Matlab内置Random Forest算法

% Train the TreeBagger (Decision Forest).

nTrees = 20;
B = TreeBagger(nTrees,traindata,trainlabels, \'Method\', \'classification\');
predChar = B.predict(testdata);
predClass = str2double(predChar)

(12) 为图像中的部分pixel上色
源图像origImg; binary 图像maskImg其中0代表背景,1代表要上色的点。
%% Example on how to color select pixels in an image.
% The original COLOR image.
origImg = imread(\'ngc6543a.jpg\');
 
% Make sure the values are within 0-255.
origImg = uint8(origImg);
 
% View the original image.
figure; fId = imagesc(origImg); axis image;
title(\'click and hold mouse to draw on the original image\'); 
 
% The user draws on the image to select the pixels to highlight.
M = imfreehand();
 
% 0 = background pixels (do not change).
% 1 = foreground pixels (change these colors).
maskImg = M.createMask;
 
% View the black and white mask.
figure; imagesc(maskImg); colormap gray; axis image;
 
% Now let\'s color the mask green to make it more interesting. 
% To do this, we have to make three matrices, one for each color channel.
 
% Increase the color by half the max value so we can see some transparancy 
% in the original image.
amountIncrease = 255/2;
 
alphaImg(:,:,1) = zeros(size(maskImg)); % All zeros.
alphaImg(:,:,2) = round(maskImg*(amountIncrease)); % Round since we\'re dealing with integers.
alphaImg(:,:,3) = zeros(size(maskImg)); % All zeros. 
 
% Convert alphaImg to have the same range of values (0-255) as the origImg.
alphaImg = uint8(alphaImg);
 
% View alphaImg.
figure; imagesc(alphaImg); axis image;
 
% Combine the original images and the alpha values to highlight the select
% pixels.
blendImg = origImg + alphaImg;
 
% Show the blended images.
figure; imagesc(blendImg); axis image;
(13) print图片打印
print -fhandle -rresolution -dfileformat filename
例如print -f2 -r300 -djpeg myfigure命令将句柄为2的图像生成myfigure.jpg文件,分辨率为dpi300
如果要求矢量图,可以用-depsc 
如果要批量制图,参考如下循环流程
for kk = 1:10
%%%生成图像
% 如果需要调整图像大小
% 在存储前使用
% set(handle,\'Position\',[left, bottom, width, height])
% 例如 set(gca, \'Position\',[80,100,800,600])
...
print(\'-r150\',\'-depsc\',[\'d:\image\myfigure\',sprintf(\'%02d\',kk)])
end
print 调整图像大小的命令
默认状态下打印大小为[0.25 2.5 8.0 6.0] in inches
调整命令三行连用
set(gcf, \'PaperPositionMode\', \'manual\');
set(gcf, \'PaperUnits\', \'inches\');
set(gcf, \'PaperPosition\', [2 1 4 2]);
units: inches,centimeters, normalized, points
(14) print命令保存eps文件与figure文件显示不同之解决方法
在print(\'-depsc\',\'a.eps\');一句前加上 "set(gcf,\'paperpositionmode\',\'auto\');"  即可
(15) 使用matlab计算两幅图片的Jaccard距离
以下示例比较画线的相似度和距离
其中白色的pixel代表线;黑色的pixel代表背景
% JaccardTest.m
% Compute the Jaccard similarity coefficient (index) of two images. 
% A value of "1" = the line object (foreground).
% A value of "0" = the background.
 
% Alice draws a vertical line.
Alice = [0 1 0; 
         0 1 0; 
         0 1 0];
 
% RobotBob tries to draw a line.     
RobotBob = [0 0 0;
            0 1 1;
            0 0 1];
 
% Carol tries to draw a line.
Carol = [0 1 0; 
         0 1 0; 
         1 1 0;];
 
% Let\'s see their two drawings.
figure; 
subplot(1,3,1); imagesc(Alice); axis image; colormap gray; 
title(\'Alice\'\'s nice line drawing\');
 
subplot(1,3,2); imagesc(RobotBob); axis image; colormap gray; 
title(\'RobotBob tries to draw Alice\'\'s line\'); 
 
subplot(1,3,3); imagesc(Carol); axis image; colormap gray; 
title(\'Carol\'\'s tries to draw Alice\'\'s line\'); 
 
% How similar are Alice\'s and Bob\'s drawing of a line? 
% An intuitive way to measure this is to compare each of the white "line" 
% pixels (a value of "1") to each other and see how many white pixels 
% overlap compared to the total number of white line pixels.
 
% We compute the intersection of the two lines using the "AND" operator "&".
intersectImg = Alice & RobotBob; 
figure; imagesc(intersectImg); axis image; colormap gray; title(\'intersection\');
 
% We compute the union of the two lines using the "OR" operator "|".
unionImg = Alice | RobotBob;
figure; imagesc(unionImg); axis image; colormap gray; title(\'union\');
 
% There is only one pixel that overlaps (intersects) 
numerator = sum(intersectImg(:));
 
% There are 5 pixels that are unioned.
denomenator = sum(unionImg(:));
 
% So intuitively we might expect that a similarity of 1/5 would 
% be a good indication. This is exactly what Jaccard\'s does.
 
jaccardIndex = numerator/denomenator
% jaccardIndex =
%     0.2000
 
% Jaccard distance shows how dis-similar the two line drawings are.
jaccardDistance = 1 - jaccardIndex
% jaccardDistance =
%     0.8000
 
%% How simililar are Alice and Carol\'s two line drawings?
 
% We can compute Jaccard\'s index in a single line,
jaccardIndex_ac = sum(Alice(:) & Carol(:)) / sum(Alice(:) | Carol(:))
%jaccardIndex_ac =
%     0.7500
%
% As expected, we can see that Alice\'s and Carol\'s drawing of a line is
% much MORE "similar" than Alice\'s and Bob\'s drawing (0.2).
 
% Let\'s check the Jaccard distance.
jaccardDistance_ac = 1 - jaccardIndex_ac
% jaccardDistance_ac =
%    0.2500
%
% As expected, we can see there is LESS "distance" between Alice\'s and
% Carol\'s drawing of a line than Alice\'s and Bob\'s drawing of a line (0.8).
通常我们不关心两幅图片的 Jaccard距离,我们关心的是图片中的形状之间的相似度。
---------------------
作者:xmjdh
来源:CSDN
原文:https://blog.csdn.net/lqhbupt/article/details/20292113
版权声明:本文为博主原创文章,转载请附上博文链接!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
VBA中执行调用matlab程序(一)发布时间:2022-07-18
下一篇:
matlab编译exe问题具体解决办法发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap