Matalb代码实现设置文件格式保存变量和图片至指定路径

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求解方程

求方程x^2+5x+6=0的解。用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一样);

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab是一种广泛使用的数学软件,在数字通信领域得到了广泛的应用。通过使用Matlab,我们可以实现数字调制和解调,例如16PSK(16位相移键控)调制和解调。 为了实现16PSK,我们可以使用Matlab中现有的函数来生成调制信号,例如pskmod()函数。这个函数可以根据输入的数字信号和相移幅度(在这个例子中为16),将输入信号转换为相应的调制信号。该信号可以通过输出到一个.wav(音频)文件来进行保存。 在解调方面,我们可以使用Matlab中提供的dsp.PSKDemodulator()函数来实现解调过程。该函数可以将接收到的调制信号转换为相应的数字信号,并进行后续的处理。在这个例子中,该函数将相移后的16PSK信号解调成数字信号,并输出到命令窗口中。 具体实现代码如下: %生成数字信号 data = randi([0, 15], 1000, 1); %调制信号 modSignal = pskmod(data, 16); %将信号保存为音频文件 audiowrite('psk16_signal.wav', modSignal, 44100); %生成噪声并将其添加到信号中 noise = 0.01 * randn(length(modSignal), 1); rxSignal = modSignal + noise; %设置解调机 demodulator = dsp.PSKDemodulator(16, 'BitOutput', true); %解调信号 rxBit = step(demodulator, rxSignal); %显示解调后的数字信号 disp('Received Bit Sequence:'); disp(rxBit'); 以上就是Matlab实现数字调制和解调的代码。当然,数字调制和解调还有许多其他的方法和技巧可以使用,需要根据具体的应用场景和需求进行选择和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值