导入数据格式要求可以在窗口内调整数据列
时间: 2023-12-09 22:04:54 浏览: 28
好的,以下是一个可以在窗口内调整数据列的程序:
```matlab
function frequency_response_gui
% 创建主窗口
f = figure('Visible','off','Position',[360,500,600,400]);
% 创建导入数据按钮
uicontrol('Style','pushbutton','String','导入数据','Position',[10,350,80,30],...
'Callback',@import_data_callback);
% 创建显示频响图按钮
uicontrol('Style','pushbutton','String','显示频响图','Position',[100,350,100,30],...
'Callback',@show_frequency_response_callback);
% 创建导出基频表格按钮
uicontrol('Style','pushbutton','String','导出基频表格','Position',[210,350,100,30],...
'Callback',@export_fundamental_table_callback);
% 创建数据列选择框
uicontrol('Style','text','String','数据列选择:','Position',[10,310,80,30]);
col_popup = uicontrol('Style','popupmenu','String',{'请选择数据列'},...
'Position',[100,315,100,20],'Callback',@col_popup_callback);
% 创建显示文本框
h_text = uicontrol('Style','text','String','请导入数据','Position',[10,10,580,300]);
% 显示窗口
f.Visible = 'on';
% 回调函数
function import_data_callback(~,~)
% 导入数据
[file, path] = uigetfile({'*.csv;*.txt','数据文件 (*.csv,*.txt)'},'请选择数据文件');
if isequal(file,0)
return
end
data = csvread(fullfile(path,file));
% 显示数据
set(h_text,'String',num2str(data));
% 保存数据
assignin('base','data',data);
% 更新数据列选择框
col_names = cell(size(data,2));
for ii = 1:size(data,2)
col_names{ii} = ['第',num2str(ii),'列'];
end
set(col_popup,'String',col_names,'Value',1);
end
function show_frequency_response_callback(~,~)
% 获取数据
data = evalin('base','data');
col_idx = get(col_popup,'Value');
col_data = data(:,col_idx);
% 进行傅立叶变换
Fs = 1000; % 采样率
N = size(col_data,1); % 信号长度
Y = fft(col_data); % 进行傅立叶变换
P2 = abs(Y/N); % 双边频谱
P1 = P2(1:N/2+1); % 单边频谱
P1(2:end-1) = 2*P1(2:end-1); % 补偿单边频谱的能量
f = Fs*(0:(N/2))/N; % 频率向量
% 绘制频响图
figure
plot(f,P1)
title('频响图')
xlabel('频率 (Hz)')
ylabel('幅值')
end
function export_fundamental_table_callback(~,~)
% 获取数据
data = evalin('base','data');
col_idx = get(col_popup,'Value');
col_data = data(:,col_idx);
% 获取基频
Fs = 1000; % 采样率
N = size(col_data,1); % 信号长度
Y = fft(col_data); % 进行傅立叶变换
P2 = abs(Y/N); % 双边频谱
P1 = P2(1:N/2+1); % 单边频谱
P1(2:end-1) = 2*P1(2:end-1); % 补偿单边频谱的能量
f = Fs*(0:(N/2))/N; % 频率向量
[max_val, max_index] = max(P1);
fundamental_freq = f(max_index);
% 导出基频表格
table_data = {'基频 (Hz)',fundamental_freq};
uitable('Data',table_data,'Position',[330,70,250,50]);
end
function col_popup_callback(~,~)
% 获取数据
data = evalin('base','data');
col_idx = get(col_popup,'Value');
col_data = data(:,col_idx);
% 显示数据
set(h_text,'String',num2str(col_data));
end
end
```
运行该程序,将会弹出一个带有导入数据、显示频响图、导出基频表格和数据列选择功能的窗口。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)