matlab



hold on 是当前轴及图形保持而不被刷新,准备接受此后将绘制

hold off 使当前轴及图形不在具备被刷新的性质

>> t=(0:pi/100:pi)';
y1=sin(t)*[1,-1];
y2=sin(t).*sin(9*t);
t3=pi*(0:9)/9;
y3=sin(t3).*sin(9*t3);
plot(t,y1,'r:',t,y2,'-bo')
hold on
plot(t3,y3,'s','MarkerSize',10,'MarkerEdgeColor',[0,1,0],'MarkerFaceColor',[1,0.8,0])
axis([0,pi,-1,1])
hold off

>> y=[0 0.58 0.70 0.95 0.83 0.25];
>> plot(y)
生成的图形是以序号为横坐标、数组y的数值为纵坐标画出的折线。
>> x=linspace(0,2*pi,30); % 生成一组线性等距的数值
>> y=sin(x);
>> plot(x,y)
生成的图形是上30个点连成的光滑的正弦曲线。
x为横轴y为纵轴
多重线

在同一个画面上可以画许多条曲线,只需多给出几个数组,例如

>> x=0:pi/15:2*pi;
>> y1=sin(x);
>> y2=cos(x);
>> plot(x,y1,x,y2)
则可以画出多重线。另一种画法是利用hold命令。在已经画好的图形上,若设置hold on,MATLA将把新的plot命令产生的图形画在原来的图形上。而命令hold off 将结束这个过程。例如:

>> x=linspace(0,2*pi,30); y=sin(x); plot(x,y)
>> hold on
>> z=cos(x); plot(x,z)
>> hold off
  1. 在MATLAB中,可以使用sprintf来格式化输出变量。

  2. MATLAB的sprintf用法几乎和C中的printf一样,参数都是printf(FORMAT,A,...)

    MATLAB的sprintf会返回一个字符串,当不使用分号;时,可以直接在屏幕输出。

  3. MATLAB的sprintf语法为[s, errmsg] = sprintf(format, A, ...)
    可以把矩阵A做数据格式的转换,格式就是format参数。
    例子:
    Str = [65 66 67 pi];
       sprintf('%s %f', Str)
    可得:
       ans =
       ABC 3.141593

matlab设计算法很简单,但是在c上去实现就比较麻烦了,采用matlab自带的mcc链接工具可以方便快速地将需要的m

文件转换为c文件。将m文件转换为c文件有一个很重要的地方需要注意:m文件的开头必须是function[输出参数1,输出参数2,...]=m文件名(输入参数1,输入参数2.....)。否则的话,会提示"...is a script M-file and cannot be compiled with the current Compiler."

 

实例,将以下语句编写为m文件保存。 

function[yfft]=tstmcc( );
y=[1,2,3,5,8];
yfft=fft(y,100);
在matlab下执行mcc -t -l tstmcc.m即可生成c和h文件。


FDA设计

function Hd = passband_fixed_20
%PASSBAND_FIXED_20 Returns a discrete-time filter object.

% MATLAB Code
% Generated by MATLAB(R) 8.2 and the Signal Processing Toolbox 6.20.
% Generated on: 29-Feb-2016 16:10:01

% Butterworth Bandpass filter designed using FDESIGN.BANDPASS.

% All frequency values are in Hz.
Fs = 10000;  % Sampling Frequency

Fstop1 = 10;          % First Stopband Frequency
Fpass1 = 15;          % First Passband Frequency
Fpass2 = 25;          % Second Passband Frequency
Fstop2 = 30;          % Second Stopband Frequency
Astop1 = 60;          % First Stopband Attenuation (dB)
Apass  = 1;           % Passband Ripple (dB)
Astop2 = 80;          % Second Stopband Attenuation (dB)
match  = 'stopband';  % Band to match exactly

% Construct an FDESIGN object and call its BUTTER method.
h  = fdesign.bandpass(Fstop1, Fpass1, Fpass2, Fstop2, Astop1, Apass, ...
                      Astop2, Fs);
Hd = design(h, 'butter', 'MatchExactly', match);

clear;
clc;
close all;
fs = 10000;
t = 0 : 1/fs : 1;
f0 = 10;
signal = sin(2 * pi * f0 * t) + sin(2 * pi * 2 * f0 * t) +sin(2 * pi * 3 * f0 * t);
Hd = passband_fixed_20;
signal_filtered = filter(Hd, signal);
plot(t, sin(2 * pi * 2 * f0 * t), 'r', t, signal_filtered, 'g');



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值