求matlab代码,实现如下功能
因为自己也很感兴趣,花了半个小时编出来,自己也从中收获了一些东西。亲测无误,望采用!
为增强程序的灵活性,此程序判断个数m可变,同时会自动增加一些无效的零,特别说明:末尾的零无效。如
other =
3 2 0
0 0 0
0 0 0
0 0 0
0 0 0
第一行3 2 之后所有的零都是加上的无效数据。
%由m定判断时每组的个数,数据存在da.txt文本文件中
%da.txt必须保存在工作目录下
clc
clear
fp=fopen('da.txt');
A=fscanf(fp,'%f');
m=3;%每组个数
N=length(A);
L=fix(N/m);
B=[reshape(A(1:L*m),m,fix(N/m)),[A(L*m+1:N);zeros(m-rem(N,3),1)]];
a=(fix(N/m)>0)+L;
aa=1;
bb=1;
cc=1;
rr=1;
AA=zeros(a,m);
BB=zeros(a,m);
CC=zeros(a,m);
other=zeros(a,m);
for a=1:a
judy=sum(B(:,a));
if judy>20
CC(aa,:)=B(:,a);
aa=aa+1;
elseif judy>10
BB(bb,:)=B(:,a);
bb=bb+1;
elseif judy>5
AA(cc,:)=B(:,a);
cc=cc+1;
else
other(rr,:)=B(:,a);
rr=rr+1;
end
end
AA
BB
CC
other
使用函数思路不对,函数应该是一个实例或者说是一个功能,里面不应该出现全局变量的,因为这会导致程序不清晰。
要实现这个功能,应该采用脚本
do while()
条件判断
end
function 函数
函数体
end
这是我刚做的,运行是正确的!ly是语音信号的名字,截图自己运行就会有!
原语音信号程序
figure(1);
[y,fs,nbits]=wavread ('ly');
sound(y,fs,nbits); %回放语音信号
n = length (y) ; %求出语音信号的长度
Y=fft(y,n); %傅里叶变换
subplot(2,1,1);plot(y);title('原始信号波形');
subplot(2,1,2);plot(abs(Y));title('原始信号频谱')
加噪语音信号程序
figure(2);
[y,fs,nbits]=wavread ('ly');
n = length (y) ; %求出语音信号的长度
t=[0:1/8000:2 zeros(1,23520-1)]';
noise=0.04*sin(10000*pi*t);%sin函数产生噪声
s=y+noise; %语音信号加入噪声
sound(s);
subplot(2,1,1);plot(s);title('加噪语音信号的时域波形');
S=fft(s); %傅里叶变换
subplot(2,1,2);plot(abs(S));title('加噪语音信号的频域波形')
滤波后的信号程序
Ft=8000;
Fp=1000;
Fs=1200;
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft;
fp=2*Ft*tan(wp/2);
fs=2*Fs*tan(wp/2);
[n11,wn11]=buttord(wp,ws,1,50,'s'); %求低通滤波器的阶数和截止频率
[b11,a11]=butter(n11,wn11,'s'); %求S域的频率响应的参数
[num11,den11]=bilinear(b11,a11,0.5); %利用双线性变换实现频率响应S域到Z域的变换
[y,fs,nbits]=wavread ('ly');
n = length (y) ; %求出语音信号的长度
t=[0:1/8000:2 zeros(1,23520-1)]';
noise=0.04*sin(10000*pi*t);%sin函数产生噪声
s=y+noise; %语音信号加入噪声
z11=filter(num11,den11,s);
sound(z11);
m11=fft(z11); %求滤波后的信号
figure(3);
subplot(2,1,1);plot(z11);title('滤波后的信号波形');
subplot(2,1,2);plot(abs(m11),'r');title('滤波后信号的频谱');
figure(1);
[y,fs,nbits]=wavread ('ly');
sound(y,fs,nbits); %回放语音信号
n = length (y) ; %求出语音信号的长度
Y=fft(y,n); %傅里叶变换
subplot(2,1,1);plot(y);title('原始信号波形');
subplot(2,1,2);plot(abs(Y));title('原始信号频谱')
差异算法实现代码(MATLAB)
为了回答如何在MATLAB中实现差异算法以解决优化问题,本文将展示一个具体的代码示例。差异算法(Differential Evolution,DE)是一种用于求解连续优化问题的全局搜索算法。下面,我们将通过MATLAB代码来实现DE算法,并以简单的球函数(Sphere Function)为目标函数进行求解。在开始编写代码前,我们先定义一些参数和...
跪求用mat lab解决电路问题的的代码
其中V是电源电压,I1, I2, I3是各支路电流。在MATLAB中,我们可以通过以下代码来求解这个问题:定义电阻值和电源电压 R1 = 1; R2 = 2; R3 = 3; V = 5;定义方程系数矩阵A和向量B A = [R1, R2, 0; 1, 1, -1; 0, -R2, R3];B = [V; 0; 0];使用MATLAB的左除运算符求解线性...
怎样在MATLAB中输入希腊字母?
- Alpha: `\\alpha`- Beta: `\\beta`- Gamma: `\\gamma`- Delta: `\\delta`- Epsilon: `\\epsilon`- Theta: `\\theta`- Lambda: `\\lambda`- Pi: `\\pi`- Sigma: `\\sigma`- Omega: `\\omega`例如,要在 MATLAB 的文本框中显示希腊字母 Alpha,你可以使用以下代码:```matlab text(0.5, ...
matlab代码是什么?
matlab编程语言是:C++语言。而且这个Matlab是一个高级的矩阵\/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。开发环境 MATLAB开发环境是一套方便用户使用的MATLAB...
matlab中c语言怎么写linspace(a, b, c)?
linspace是一个很有用的函数,通常我们要给一个函数,比如sin(x)画图的时候,我们需要横坐标在一定区间很多个点,比如区间是[-10,10],如果是我们想要每隔0.1取一个数,我们可以这样写x=-10:0.1:10就可以了。输入下面的代码:x=-10:0.1:10;plot(x,sin(x)),就可以作图了。MATLAB编程环境 ...
如何在matlab的图形上画出文字?
例如,如果我们想要在坐标的位置添加文本“这是一个示例文本”,我们可以使用以下MATLAB代码:matlab figure; % 创建一个新的图形窗口 plot); % 随机绘制一条线,仅作为背景 hold on; % 保持当前图形,以便在其上添加更多元素 text; % 在坐标处添加文本 这段代码首先创建一个新的图形窗口...
如何用Matlab求解级数的和??
接下来,我们需要使用一个循环结构来计算级数的和。在每次迭代中,我们将函数 f(i) 的值加到总和中。最后,我们需要设置一个条件来决定何时停止迭代。在这个例子中,我们可以设置一个阈值,当新的项的值小于这个阈值时,我们就停止迭代。下面是对应的Matlab代码:Matlab 复制代码 定义函数 f = @(i) ...
求代码!这个用matlab怎么做
绘制二维正态分布概率密度图像,可以用下列代码来实现:第一步:自定义二维正态分布概率密度函数,即 func=@(x,y)1\/sqrt(2*pi)*exp(-3*x.^2-5*y.^2);第二步,确定x、y的图像显示范围,如x【-2,2】、y【-2,2】,即xy=[-2,2,-2,2];第三步,使用fmesh函数,绘制其三维曲面图...
...内插间隔设为0.05,应该怎么用matlab编写代码?
你可以使用 Matlab 的interp1 函数来进行线性插值。以下是一个示例代码: 假设你的 10 个数据存储在一个向量 x 中 x = [1 2 3 4 5 6 7 8 9 10];使用interp1 函数进行线性插值,内插间隔为 0.05 y = interp1(x, [1:10]', 0:0.05:1, 'linear');输...
MATLAB中如何表示复数?
matlab 中复数表示步骤如下:1、首先我们创建一个矩阵A,矩阵中的元素我们自定义,如我们在MATLAB命令窗口中输入代码 A=[2 4 6 8;10 12 14 16;18 20 22 24;26 28 30 32],即可创建一个4行4列的矩阵。2、我们如果需要对此矩阵横向串联的话我们在MATLAB命令窗口中输入代码:B = [A,A],...
祢炊偏瘫: 这个比较简单 其实就是基于matlab的语音信号滤波处理 这是我刚做的,运行是正确的!ly是语音信号的名字,截图自己运行就会有! 原语音信号程序 figure(1); [y,fs,nbits]=wavread ('ly'); sound(y,fs,nbits); %回放语音信号 n = length (y) ; %求出语...
魏县18289773158: 编写一个matlab函数,实现下列功能?
祢炊偏瘫: function y = ff(a, b) if nargin == 1 y = factorial(a); elseif nargin == 2 y = factorial(a) + factorial(b); end当超出三个参数时,自动会报错. 如果你想自己判断是否超出三个,可使用varargin function y = ff(a, b, varargin) if nargin == 1 y = factorial(a); elseif nargin == 2 y = factorial(a) + factorial(b); else disp('Error - Too many arguments') end
魏县18289773158: 编写一个matlab函数,要求实现以下功能:? - ?
祢炊偏瘫: function fac = test_fac(varargin) switch nargin case 1 fac = factorial(varargin); case 2 fac = factorial(varargin{1}) + factorial(varargin{2}); otherwise error('Too many input arguments'); end end
魏县18289773158: 求一个matlab软件计算程序 程序实现以下功能:1、从其他文件导入大量数据 - ?
祢炊偏瘫: 因为自己也很感兴趣,花了半个小时编出来,自己也从中收获了一些东西.亲测无误,望采用!为增强程序的灵活性,此程序判断个数m可变,同时会自动增加一些无效的零,特别说明:末尾的零无效.如 other = 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 第...
魏县18289773158: 我想用matlab实现下面一个很简单的功能,怎么写代码比较简单? - ?
祢炊偏瘫: 比如说你那个向量是A B=A(find(A,1):end) 即可. 但是我估计和直接用while循环效率差不多,可能直接用循环还会快一点也说不定,for循环因为还要加一个判断语句效率估计不行.
魏县18289773158: 如下功能的MATLAB程序该怎么写呢? - ?
祢炊偏瘫: 算法上没必要那么复杂,考虑到实质是:差值的绝对值在0.001的范围内,并保持从单侧进行趋近.所以可以用以下方法 clear,clc x1=5; x2=2; dif = x2-x1; while abs(dif/x1) >= 1e-3 x2= x1 + dif/2; dif = x2-x1; end
魏县18289773158: 用matlab实现图像读,写,存,显示这几个功能的代码 - ?
祢炊偏瘫: 图像读 I=imread('C:\My Matlab\0.bmp'); %路径可以是绝对,也可以是相对 图像写 I=zeros(100,100); for i=1:100 for j=1:100 I(i,j)=255; %写入你要赋给该像素的值 end end 图像存 imwrite(I, 'C:\My Matlab\0.bmp');%路径可以是绝对,也可以是相对 图像显示 figure;imshow(I);
魏县18289773158: 用Matlab编写程序实现功能 - ?
祢炊偏瘫: function [ ] = drawn( n )%UNTITLED Summary of this function goes here% Detailed explanation goes here if nargin==0%没有输入参数 n=1000;%用1000边形模拟圆 textout='圆'; elseif n>2 && n==fix(n)%输入n textout=[num2str(n) '边形']; else ...
魏县18289773158: 试用MATLAB编写一个函数文件(subject4.m),实现以下功能?
祢炊偏瘫: function A=subject4(varargin) if nargin==0 error('请至少输入一个大于1的整数'); end N = varargin{1}; if N~=fix(N) || sum(size(N))~=2 || N<=1 error('N必须是大于1的整数'); end if nargin==1 A=primes(N); fprintf('输出A为1~N内的所有质数为:...
魏县18289773158: 运用matlab 实现,输入一个1 - 6位数,判断是否能被2整除或者是能被3整除, 要怎么写代码实现该功能?如下: - ?
祢炊偏瘫: n=input('输入一个小于1000000的数:'); for i=2:10s='false';if rem(n,i) = = 0s='true';endsprintf('数字%d可以被%d整除:%s\n',n,i,s) end;