⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modexpofn.m

📁 非常好的数字处理教程
💻 M
📖 第 1 页 / 共 2 页
字号:
        case 'fourier'			if handles.fileopen{3}				fourierexpogui(handles.audio{3});			end        case 'print'            print_figure(f);        case 'close'            close_figure(f,figname(1:end-4));            return;	end	set(f,'UserData',handles);% --------------------------------------------------------------------function loadTimePlot(handles, signum)	Fs = handles.audio{signum}.Fs;	t = [0:1/Fs:(length(handles.audio{signum}.data)-1)/Fs];	eval(['timeplot = handles.sig_' num2str(signum) '_time;']);	axes(timeplot)    plot(t,handles.audio{signum}.data)    maxtime = length(t)/Fs;    set(timeplot,'XLim',[0 maxtime]);    set(timeplot,'YLim',[-1.1 1.1]);	if (signum ~= 1)		set(timeplot,'YTickLabel',['']);	end    grid;    xlabel('time (s)');    % --------------------------------------------------------------------function loadSpecPlot(handles, signum)	Fs = handles.audio{signum}.Fs;	eval(['spectrumplot = handles.sig_' num2str(signum) '_spec;']);    axes(spectrumplot);    handles.pos = get(gca,'Position'); % Save axes position    if (get(handles.interpolate,'Value'))        if (get(handles.dB,'Value'))            pcolor(handles.audio{signum}.st,handles.audio{signum}.bin,...				20*log10(abs(handles.audio{signum}.spectrum)));        else            pcolor(handles.audio{signum}.st,handles.audio{signum}.bin,...				abs(handles.audio{signum}.spectrum));        end        shading interp;    else        if (get(handles.dB,'Value'))            imagesc(handles.audio{signum}.st,handles.audio{signum}.bin,...				20*log10(abs(handles.audio{signum}.spectrum)));        else            imagesc(handles.audio{signum}.st,handles.audio{signum}.bin,...				abs(handles.audio{signum}.spectrum));        end    end    axis xy;	ylabel('Frequency (Hz)');	if (signum ~= 1)		ylabel('');		set(spectrumplot,'YTickLabel',['']);	end	contents = get(handles.colormap,'String');    cmap = colormap(lower(contents{get(handles.colormap,'Value')}));	if (get(handles.inverse,'Value'))		cmap = flipud(cmap);	end	colormap(cmap);    set(spectrumplot,'XTickLabel',['']);    ha = axes('position',[0.15+(signum-1)*0.31 0.15 0.075 0.015]);    set(ha,'Visible','off');	ts = 5.5;    to = 2;	info = sprintf(['Filename: %s\n Duration: %s seconds\n Fs: %s Hz'], ...        handles.audio{signum}.filenamepath, ...        num2str(length(handles.audio{signum}.data)/Fs), ...        num2str(Fs));    eval(['set(handles.text' num2str(signum) ',''String'', info);']);% --------------------------------------------------------------------function handles = loadworkspace(handles)	[file, path] = uigetfile({'*.mat','MATLAB datafile'}, 'Open');	load([path file]);	set(handles.colormap,'Value',graphprops{1});	set(handles.window,'Value',graphprops{2});	set(handles.fftsize,'Value',graphprops{3});	set(handles.inverse,'Value',graphprops{4});	set(handles.dB,'Value',graphprops{5});	set(handles.interpolate,'Value',graphprops{6});	for signum=1:3,		if (openfiles{signum})			handles.fileopen{signum} = true;			handles.audio{signum} = audio{signum};		end	end% --------------------------------------------------------------------function handles = amdsbsc(handles)	signal_1 = handles.audio{1}.data; % Carrier	signal_2 = handles.audio{2}.data; % Modulator	samples = length(signal_1);	while length(signal_1) > length(signal_2)		signal_2 = [signal_2; signal_2];	end	Fs = handles.audio{1}.Fs;	filename = ['AM-DSBSC'];	audiodata = normalize(signal_1(1:samples).*signal_2(1:samples));	handles.audio{3}.t = [0:1/Fs:(length(audiodata)-1)/Fs];	handles.audio{3}.filenamepath = filename;	handles.audio{3}.Fs = Fs;	handles.audio{3}.data = audiodata;	signum = 3;	contents = get(handles.fftsize,'String');	fftsize = str2double(contents{get(handles.fftsize,'Value')});	contents = get(handles.window,'String');	shape = contents{get(handles.window,'Value')};	[handles.audio{signum}.spectrum,...	 handles.audio{signum}.bin,...	 handles.audio{signum}.st] = ...		spectrogram(handles.audio{signum}, fftsize, shape);	handles.fileopen{3} = true;function handles = amdsbtc(handles)	% In the future scale sound to be envelope to be exactly the length	% of the sound it is being applied to.	signal_1 = handles.audio{1}.data;	signal_2 = handles.audio{2}.data;	% Make unipolar	%signal_1 = signal_1 + min(signal_1);    signal_1 = signal_1 + 2;	samples = length(signal_1);	while length(signal_1) > length(signal_2)		signal_2 = [signal_2; signal_2];	end	Fs = handles.audio{1}.Fs;	filename = ['AM-DSBTC'];	am_offset = 1.5;	audiodata = normalize((signal_1(1:samples)+am_offset).*signal_2(1:samples));	handles.audio{3}.t = [0:1/Fs:(length(audiodata)-1)/Fs];	handles.audio{3}.filenamepath = filename;	handles.audio{3}.Fs = Fs;	handles.audio{3}.data = audiodata;	signum = 3;	contents = get(handles.fftsize,'String');	fftsize = str2double(contents{get(handles.fftsize,'Value')});	contents = get(handles.window,'String');	shape = contents{get(handles.window,'Value')};	[handles.audio{signum}.spectrum,...	 handles.audio{signum}.bin,...	 handles.audio{signum}.st] = ...		spectrogram(handles.audio{signum}, fftsize, shape);	handles.fileopen{3} = true;% Sing sideband transmitted carrierfunction handles = ssbsc(handles)	signal_1 = handles.audio{1}.audiodata;	signal_2 = handles.audio{2}.audiodata;	if (length(signal_2) > length(signal_1))		samples = length(signal_1);	else		samples = length(signal_2);	end		Fs = handles.audio{1}.Fs;	filename = ['SSBSC'];	audiodata = signal_1(1:samples).*signal_2(1:samples);    % Uknown if this is correct...    audiodataH = hilbert(signal_1(1:samples)).*hilbert(signal_2(1:samples));    % Hilbert transform    %audiodataH = hilbert(audiodata);    % Retain uppersideband (lower sideband = '+')    audiodata = audiodata - audiodataH;	audiodata = real(audiodata);    	handles.audio{3}.t = [0:1/Fs:(length(audiodata)-1)/Fs];	handles.audio{3}.filenamepath = filename;	handles.audio{3}.Fs = Fs;	% Normalize	if (max(abs(audiodata)) > 1.0)		audiodata = audiodata./max(abs(audiodata)+0.1);	end	handles.audio{3}.audiodata = audiodata;	signum = 3;	contents = get(handles.fftsize,'String');	fftsize = str2double(contents{get(handles.fftsize,'Value')});	contents = get(handles.window,'String');	shape = contents{get(handles.window,'Value')};	[handles.audio{signum}.spectrum,...	 handles.audio{signum}.bin,...	 handles.audio{signum}.st] = ...		spectrogram(handles.audio{signum}, fftsize, shape);	handles.fileopen{3} = true;    % --------------------------------------------------------------------function saveworkspace(handles)	[file, path] = uiputfile({'*.mat','MATLAB datafile'}, 'Save as');    % Save these variables	audio = handles.audio;	openfiles = handles.fileopen;	graphprops = {get(handles.colormap,'Value'), ...				get(handles.window,'Value'),...				get(handles.fftsize,'Value'),...				get(handles.inverse,'Value'),...				get(handles.dB,'Value'),...				get(handles.interpolate,'Value')};    save([path file], 'audio','openfiles','graphprops');function audiodata = calculate_sig(freqenv,ampenv,varargin)	switch nargin		case 2			Fs = 44100;			samples = Fs;		case 3			samples = varargin{1};			Fs = 44100;		case 4			samples = varargin{1};			Fs = varargin{2};	end	minfreq = min(freqenv(2:2:end));	maxfreq = max(freqenv(2:2:end));	if (minfreq ~= maxfreq)		freqenv(2:2:end) = freqenv(2:2:end) - minfreq;		freqskew = max(freqenv(2:2:end));		freqenv(2:2:end) = freqenv(2:2:end)./freqskew;	else		freqskew = 0;		freqenv(2:2:end) = freqenv(2:2:end)./minfreq;	end	amp = 1;	% Synthesize modulation signal	audiodata = additive(samples, minfreq, freqskew, amp, ...			 {freqenv}, {ampenv}, {[1 1]}, Fs);	audiodata.data = audiodata';	audiodata.filenamepath = ' ';	audiodata.Fs = Fs;	audiodata.nbits = 16;%function save_modulation_soundfile_Callback(hObject, eventdata, handles)%	signum = 2;%	if (handles.fileopen{signum})%		% Popup menu to write soundfile to%		[filename, pathname] = uiputfile('*.wav', 'Save sound as');%		if isequal(filename,0) | isequal(pathname,0)%			return;%		end%		signal = handles.audio{signum}.audiodata;%		Fs = handles.audio{signum}.Fs;%		if (max(abs(signal)) > 0.9) %			signal = signal./max(abs(signal)+0.1);%		end%		wavwrite(signal,Fs,16,[pathname filename]);%		disp(['File saved as ', fullfile(pathname, filename)])%	end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -