0 利用saveas函数保存指定文件格式的图片到指定路径
利用代码实现保存变量和图片到指定路径中,而非机械的手动一个一个单独保存,解放双手,提高工作效率。且可以设置保存路径、文件名、文件格式等。
saveas函数,绘图后保存图窗文件:
用法1:只有文件名及文件后缀。(此时存储在当前路径中)
saveas(gcf,'1.bmp');
gcf表示当前图窗;'1.bmp'是文件名及格式后缀,需要加单引号。
拓:gcf可以使用图窗序号的数字代替,或者figure函数返回的图窗句柄(粗俗理解就是你赋的值)。
用法2:指定保存路径。
saveas后接指定路径时需要用双引号括起来,即''路径+(带文件格式后缀的)文件名''。
如:saveas(1,"D:\桌面\MATLAB123\测试saveas图窗名图1.fig");其中1表示图窗1。“测试saveas图窗名图1.fig”为文件名及后缀。
附代码:
clf;clear;clc;close all;
dt = 0.05;t = 0:dt:4*pi;
y1 = sin(t);y2 = cos(t);
figure(1);plot(t,y1);
figure(2);plot(t,y2);
saveas(1,"D:\桌面\MATLAB123\测试saveas图窗名图1.fig");
saveas(1,"D:\桌面\MATLAB123\测试saveas图窗名图1.bmp");
saveas(2,"D:\桌面\MATLAB123\测试saveas图窗名图2.fig");
saveas(2,"D:\桌面\MATLAB123\测试saveas图窗名图2.bmp");
% saveas后的1、2表示图窗1、图窗2;
% 'D:\桌面\MATLAB123\'是指定的保存路径
% 保存至此电脑D盘\桌面\的文件夹MATLAB123中
f1 = figure('name','Figure1'); % f1为返回的图窗句柄
figure(f1);plot(t,y1);
f2 = figure('name','Figure2'); % f2为返回的图窗句柄
figure(f2);plot(t,y2);
saveas(f1,"D:\桌面\MATLAB123\测试saveas路径图1.fig");
saveas(f1,"D:\桌面\MATLAB123\测试saveas路径图1.bmp");
saveas(f2,"D:\桌面\MATLAB123\测试saveas路径图2.fig");
saveas(f2,"D:\桌面\MATLAB123\测试saveas路径图2.bmp");
% saveas后的f1、f2表示图窗1、图窗2的图窗句柄;
待解决问题
待填坑备忘录:
自定义子函数,设置多种输出形式。有必须输出项,和可选择输出的项。像max函数那样。
Python是通过方括号[]把非必要输出参数括起来,进而实现。那Matlab怎么弄呢。
例如:
a = fFunc(x,y,z);
[a,b]= fFunc(x,y,z);
[a,b,c]= fFunc(x,y,z);
1 奇技淫巧
1.1 行(列)向量所有元素平方和
之前:sum( At(:,1) .* At(:,1) );或者sum( At(:,1).^2 );
现在:先把列(行)向量转置,再与自己相乘,即可实现列(行)向量所有元素的平方和。
At(:,1)' *At(:,1);
2 Matalb求解方程
求方程的解。用solve命令。 solve(x^2+5*x+6);2021之前的版本需要用引号solve('x^2+5*x+6');
求导 利用diff函数
驻点:一阶导数为0或者不存在的点;
拐点:二阶导数为0?
求驻点方法:1.用diff函数求一阶导数;2.用solve函数求一阶导数为0 的点。
y = ;
dy = diff(y); % 函数y的一阶导数
xz = solve(dy); % 驻点(一阶导数为0的点)
3 max求数组最大值
max函数返回数组的最大元素。
如果 A 是向量,则 max(A) 返回 A 的最大值。
如果 A 为矩阵,则 max(A) 是包含每一列的最大值的(得到一个)行向量。
如果 A 是多维数组,则 max(A) 沿大小不等于 1 的第一个数组维度计算,并将这些元素视为向量。此维度的大小将变为 1,而所有其他维度的大小保持不变。
如果 A 是第一个维度长度为零的空数组,则 max(A) 返回与 A 大小相同的空数组。
例:如果数组 A 是4维数组,则A可以用4层max函数求4维数组 A 的最大值:max(max(max(max(a))));或者用max(A(:))。
M = max(A)
[M n] = max(A)
M = max(A,dim)
4 寻访多维数组的最大值及其位置
多维数组全下标和单下标的转换函数:
ind2sub函数
sub2ind函数:
[I1,I2,...,In] = ind2sub(sz,ind)。函数ind2sub返回n个数组I1,I2,...,In(注意是数组,因为可以同时寻访多个数)。
参数sz是原数组的行列页数,可以用size(a)表示,也可以用[行数 列数 页数 第4维]表示。
参数ind是单下标值(线性索引值)。
例:[A B C D]=ind2sub(size(a),find(max(max(max(max(a)))) == a));
[A B C D]=ind2sub(size(a),find(max(a(:)) == a));这个max(a(:))用得就很帅喔。
5 记录代码运行时间
通过记录代码运行时间来对比算法运算效率。
途径1:tic和toc组合使用
代码运行遇到tic时Matlab自动开始计时,运行到toc时自动计算此时与最近一次tic之间时间间隔,并在命令行窗口显示。
tic放在程序开头,toc在程序末尾。
tic % 开始计时
...需要计算运行时间的代码块
toc % 结束计时
figure函数用法
用法1:figure;%创建一个新的窗口,所有参数采用默认
用法2:figure(数字s);% 创建图窗figure s,s为正整数。
用法3:figure('PropertyName',propertyvalue,...);% PropertyName表示属性关键字,如图窗名、位置及大小;propertyvalue表示对应的属性值。
figure(′name′,′图窗名′);
figure(′position′,′[a,b,c,d]′) ...% 数字ab表示图窗左下角位置(离屏幕左下角的距离);数字cd表示图片长宽大小。
用法4:X = figure(数字s);% 返回该窗口的句柄。
低通滤波函数:lowpass(x,fpass,fs) % x 一维信号,fpass:截止频率,fs:采样频率。
fix函数:向零点舍入,往零的方向上靠。例:fix(pi)=3;fix(3.5)=3;fix(-3.5)=-3;
gcf:返回当前Figure 对象的句柄值。
gca:返回当前axes 对象的句柄值(在窗口中显示图形的轴)。
gco:返回当前鼠标单击的句柄值,该对象可以是除root 对象外的任意图形。
Matalb通过设置断点提高调试程序效率。
\n:换行。
1.%d就是输出整型;%3d就是说按照长度为3的整型输出,比如10,输出就是“_10”,“_”代表空格。
2.%f就是输出小数;%6.2f就是小数点后保留2位,输出总长度为6,比如3.14159,输出后就是“_ _ _3.14”(前面三个空格)
3.%c就是输出字符串;
4.%s就是输出字符串(和%c一样);