本文主要是介绍GUI listbox,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
GUI listbox
(自用笔记)
功能details拆分
同时打开多个文件,可以是不同类型的,在listbox中显示出路径和文件名;
计算每个数据文件(.txt或.dat)掉帧出现的行数,存储到元胞数组,输出到一个listbox;
计算每个文件分别错帧总数,存到一个向量里,输出到一个listbox;
初步功能的简陋GUI
listbox/列表框
其列表属性中 string 直接输入显示换行的方法:
- 双击这个地方,暴、力输入换行:
- 使用.m语句
set(handles.listbox1,'String',[{'图书馆'};{'图书馆2'}]);
读取多行文件:uigetfile
设置MultiSelect为on
[filename, pathname, filterindex] = uigetfile( '*.*','Pick the file','MultiSelect', 'on');
full code
[filename, pathname, filterindex] = uigetfile( '*.*','Pick the file','MultiSelect', 'on');
sz=size(filename);
for i = 1:sz(2)Filename{i} = [pathname,filename{1,i}];A{i,1} = textread([pathname,filename{1,i}],'%s');%通过B存储可以读取到的几个不同格式的数据
end
pushbutton的callback,
读取二进制,mindmap @ProcessOn :
%将多组数据的1516列分别提取出来
for i = 1:length(A)ddec_A = zeros(length(A{i,1}),1);for j = 1:length(A{i,1}) a = A{i,1}(j);%取第一行数组
% b(i) = hex2dec(a{1,1}(1:2));%取第15-16个字符并转换为十进制ddec_A(j) = hex2dec(a{1,1}(15:16));decA{i} = ddec_A;%1x2cell 存了组数据的1516列 并转化为10进制的结果%{}前不能带下划线,此类型的变量不可以end
end
PickColum = decA;
getNN = size(decA{1,1});getN = getNN(1);%=21 = length(pickcol)
n = 0;
d = 0;
X = [0 0];
for j = 1:length(decA)pickcol = PickColum{1,j};% 放到循环里来,每轮更新n,d从0开始n = 0;d = 0;X = [0];% 这里我本来设置的是[0,0]for i = 2:getN % length(pickcol)m = pickcol(i) - pickcol(i-1);if ((m ~= 1 )&&(m*(-1)~=200))d = d + 1;X(d) = i;% 记下当前出错行标n = n+1;% 总行数加一nn = n;elsenn = n;d = d;endendXX{j,1} = X; NN{j} = nn;
enddisp(XX) disp(NN)for i = 1:length(XX)XX1{i} = num2str(XX{i,1});
% XX2 = XX1;
end
事后发现n和d留一个就行,不过本着能用就行的原则,也懒得优化了
注意此时,
项目 | Value |
---|---|
X | 记录本轮数据错帧行行标 |
nn | 记录本轮数据错帧总行数;属性:cell |
XX | 属性:double组成的cell |
NN | 属性:double组成的cell |
显示到listbox时要换行:
因此以下处理:
for i = 1:length(XX)XX1{i} = num2str(XX{i,1});
% XX2 = XX1;
endset(handles.listbox3,'String',NN);%[{'图书馆'};{'图书馆2'}]
% set(handles.listbox2,'String',[XX{1,1};XX{2,1}]);
set(handles.listbox2,'String',XX1);
选了两组数据做实验
这篇关于GUI listbox的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!