MATLAB App Building 包含 GUIDE 和 App Designer 文档。
11、只能读取纯数值的csv文件;
22、当csv文件中有字符串等其他类型的值时,将跳过该行或该列;
33、csv文件中的空项,读到矩阵中时,会初始化为0;
(1)M = csvread('filename'); % 直接输入文件名,将数据读到矩阵M中。
(2)M = csvread('filename', row, col); % 指定开始读取位置的(row)和(col);当 row = 0,col = 0 时表示从文件中第一个数开始读。
(3)M = csvread('filename', row, col, range); % 选定读取范围。range= [R1 C1 R2 C2],(RI,C1)是读取区域的左上角,(R2,C2)是读取区域的右下角。另外,要求row = R1. co1 = C1。
11、读取并处理 Excel 中的数字、字符(中英文);—— 也可以读取csv文件
22、对(部分)非数值单元,将处理为 nan;
33、对前几行(列)皆为非数值,将直接忽略;
(1)[data, str] = xlsread('filename.xlsx'); % 数据都在data中,字符都在str中;
(2)num = xlsread('filename'); % 默认读取 sheet1 中的数据;
(3)num = xlsread('filename', sheet); % 读取 excel 文件中的指定 sheet;
(4)num = xlsread('filename', sheet, 'range'); % 指定读取范围。例如:'D2:H4'表示以 D2 和 H4 为对角定点的矩形域;
(1)T = readtable(filename) % 通过从文件中读取列向数据来创建表。
(2)T = readtable(filename,opts) % 使用导入选项 opts 创建表。
% 例如: opts = detectImportOptions(filename); % 创建导入选项,定制多个变量的数据类型,然后读取数据。
% opts.MissingRule = 'omitrow'; % 忽略发生错误的行
% [T] = readtable(filename,opts);
(3)T = readtable(___,Name,Value) % 基于文件创建一个表,并通过一个或多个名称-值对组参数指定其他选项。
% 例如,您可以指定 readtable 是将文件的第一行读取为变量名称还是数据。
11、只支持读取(.csv)的第一个sheet;
22、支持读取(.xls)的指定sheet;
33、file_data读取的数据必须为数值、元胞或逻辑数组;
44、file_path需要具体到文件的扩展名;例如:'test. csv'
、'test.xlsx'
;
(1)writetable(file_path, file data); % 表头默认自动添加(表头不存在,系统将自动添加Var1... Var15)
(2)writetable(file_path, file_data, 'WriteVariableNames', false); % 表头可以设置隐藏(true/false)
(3)writetable(T, 'myData.xls', 'Sheet', 1, 'Range' , 'B2:F6'); % 将表写入到电子表格(. xls)中特定的工作表和范围,(. csv)不行
if table_data.Properties.VariableNames(4) = "PATIENTID"
PATIENTID_Var = table_data.PATIENTID(jj); % 若表头存在,则直接提取
else
PATIENTID_Var = table data.Var4(jj); % 若表头消失,则提取系统自动填充的表头
end
【说明】 table(表)数据在移植过程中,若表头不存在或(自动)消失,系统将自动填充:Var1 - VarN
【访问表头】file_data.Properties.VariableNames(jj);
表示访问(table类型的file.data文件,属性(Properties)列表中的变量名(VariableNames:即所有表头名称),第 jj 列表头
【访问数据】file_data.TYPE(jj)
:表示访问(table类型的file_data文件)中,表头TYPE (列),对应的第 ( jj ) 行数据
(1) T = table(var1, var2, ..., varN);
% 根据输入变量创建表。不同变量的列数和数据类型可以不同(如:cell/mat等),但所有变量的行数必须相同。
(2) T = table(A, B, 'VariableNames', {'Card', 'ID'}, 'RowNames', {'Mean':'SD'});
% 添加表头与行名。若只添加表头不添加行名:table(A, B, 'VariableNames', {'Card', 'ID'});
(3) T = array2table( Array(待转换的矩阵), 'VariableNames', {'矩阵有几列,表头就有几个"});
% 该方法适用于表头需要分别命名的情况。如:Card、ID、K、Calib。
(4) T = array2table( Alg );
% 该方法适用于表头太多的情况。系统自动命名:Alg1、Alg2...AlgN;
删除线格式
删除线格式
删除线格式
删除线格式
删除线格式
% 不同数据类型,表示缺失值不同。
(1) 数值数据类型(double):使用 NaN (非数字)表示缺失值。
(2) 数据类型(datetime、string和categorical); 使用 missing 值表示缺失数值数据或其他类型的数据。MATLAB自动将 missing 值转换为数据的原生类型。
(1) NaT; % 数据类型:datetime - 非时间(NaT:Not - a -Time)
(2) NaT(3); % 创建一个由 NaT 值组成的 3x3 datetime 矩阵。
(3) tf = isnat(A); % 返回大小与 A 相同且包含逻辑值 1(true) 和逻辑值 0 (false) 的日期时间数组;
(4) t = datetime; % 返回一个对应于当前日期和时间的标量 datetime 数组。
A = [NaN, 2, 2, 2, 2];
(1) X = NaN(size(A)); % 创建一个由 NaN 值组成的、大小与现有数组相同的数组。
(2) mean = nanmean(A); % 删除 NaN 所在行,并且数据更新为:[2, 2, 2, 2],然后计算均值(原序列数据不改变)
(3) std = nanstd(A); % 删除 NaN 所在行,并且数据更新为:[2, 2, 2, 2],然后计算标准差(原序列数据不改变)
(4) R = corrcoef(D, 'Rows', 'complete'); % 删除 NaN 所在行,计算更新后矩阵 D 的 Pearson 相关系数,R 为对称矩阵 (原矩阵数据不改变)
% [备注1]R = corrcoef(A, B) % 计算序列 A 与序列 B 的 Pearson 相关系数;
% [备注2]R = (ρ(A, A) ρ(B, A); R = (ρ(A, A) ρ(B, A) ρ(C, A);
ρ(A, B) ρ(B, B)); ρ(A, B) ρ(B, B) ρ(C, B);
ρ(A, C) ρ(B, C) ρ(C, C));
(1)isempty(A) % 判断数组是否为空:[ ] (空类型即 double类型);变量(值)只要初始化,则必定不为空
(2)~isnan(A) % 判断变量(值)是否不为 NaN
(3)isa(pi, 'double'); % 确定变量是否具有指定的数据类型(classname:double/single/char/str ing/cell/struct/table etc.)
删除线格式
删除线格式
删除线格式
删除线格式
删除线格式
A = datestr(now, 31);
11、datestr - 生成指定格式的日期和时间,结果是字符类型;
22、now - 当前系统的日期和时间;
33、输出格式共有31种(用户可指定),以下是第31种格式:'yyyy-mm-dd HH:MM:SS'
def_format = 'mm-dd-HH-MM'; % 自定义格式
t_str = datestr(now, def_format);
(0)selected_filepath = uigetdir; % 保存加载文件/文件夹的路径;
(1)mkdir(folder_name); % 在当前文件夹下创建名为 folder name 的文件夹;
(2)rmdir(folder_name, 's'); % 删除文件夹(及其所有子文件夹和文件),其名称为folderName;
(3)All_File = dir(folderpath); % 列出当前文件夹/路径下的所有文件和文件夹;
(4)All_File(i).isdir; % 判断当前路径下输入(文件/文件夹)是否为文件夹(需跟随函数dir()使用);
(5)FileNames = All_File.name; % 提取所有(文件/文件夹)的文件名,转换为 n 行 1 列;
(6)isfolder('folderName'); % 判断当前路径下输入的(文件/文件夹)是否为文件夹;
(7)isfile('fileName'); % 判断当前路径下输入的(文件/文件夹)是否为文件(文件需包含后缀名);
dir:列出当前文件夹/路径下的所有文件和文件夹
isdir:判断当前路径下输入(文件/文件夹)是否为文件夹(需跟随函数dir()使用)
uigetdir:保存(加载的文件/文件夹)路径
mkdir:在当前文件夹下,创建名为 folder name 的文件夹
rmdir:删除文件夹(及其所有子文件夹和文件)
isfolder : 判断当前路径下输入的(文件/文件夹)是否为文件夹
isfile:判断当前路径下输入的(文件/文件夹)是否为文件(文件需包含后缀名)
ls % 列出当前文件夹的所有内容;
ls m* % 使用 '*' 通配符来匹配模式;
(1)ls *.m % 列出扩展名为 .m 的所有文件和文件夹;
(2)ls m* % 列出名称以字母 m 开头的所有文件和文件夹;
% 备注:该方法不可以赋值操作,否则报错。如:c = ls m*
list = ls('name'); % 在当前文件夹中,返回与指定 name 匹配的文件和文件夹的名称。
TF1 = contains(str, pat); % 如果 str 包含指定的模式,将返回1(true),否则返回0(false);
TF2 = contains(str, pat, 'IgnoreCase', true); % 在确定 str 是否包含 pat 时将忽略大小写;
% 举例:str = ["Mary Ann Jones", "Paul Jay Burns", "John Paul Smith", PAUL];
% pat = "Paul";
% TF1 = contains(str, pat); % TF1 = [0, 1, 1, 0];
% TF2 = contains(str, pat, 'IgnoreCase', true); % TF2 = [0, 1, 1, 1];
Lia = ismember(A, B); % 判断数据 A 的元素是否在 B 中
[Lia, Locb] = ismember(A, B); % 确定 A 的哪些元素同时也在 B 中及其在 B 中的相应位置。
(1)tar('tarfilename', 'filenames'); % 将 filenames 进行文件压缩,压缩后的压缩包名称为 tarfilename,以(.tar)格式结尾。
(2)untar('mytar_files', 'tar_path'); % mytar_files 表示压缩包路径(包括文件名+后缀),tar_path表示解压缩后的文件保存路径(不包括文件名) ;
例如:untar('C:\Desktop\RawData.tar.gz', 'C:\Desktop');
errordlg('没有选择文件,请重新选择 !', '错误');
msgbox(error_folder, '加载的数据不符合要求', 'Error');
% 分隔符:(1)逗号:','; (2)空格:' '; (3)制表符:'\t';
(1)dlwrite(Filename, M);
% 将矩阵 M 导出到 Filename 中,分隔符默认为逗号','
(2)dlmwrite(fileName, M, 'delimiter', '\t', 'precision', 6);
% 将矩阵 M 导出到 fileName 中,分隔符为制表符'\t',有效数位为6位(整数位+小数位,小数点位不算) ;
删除线格式
删除线格式
删除线格式
删除线格式
删除线格式
(1) str = strcat(num2str(100), '万', '不够花');
(2) str = ['C:\Users\pc\Desktop', '\RawData.tar.gz', num2str(1)];
(1)strcmp(s1, s2); % 比较字符串(区分大小写)
(2)strcmpi(s1, s2); % 比较字符串(不区分大小写)
(3)strncmp(s1, s2, n); % 比较字符串的前 n 个字符(区分大小写)
(4)strncmpi(s1, s2, n); % 比较字符串的前 n 个字符(不区分大小写)
cell2table(a) % 将(元胞)cell转换为(表)table
cell2mat(a) % 将(元胞)cell转换为(矩阵)mat
table2cell(a) % 将(表)table转换为(元胞)cell
num2cell(a) % 将(数值)num转换为(元胞)cell
mat2str(a) % 将(矩阵)mat转换为(字符串)str
num2str(a) % 将(数值)num转换为(字符串)str
array2table(a) % 将(数组)array转换为(表)table
char(a) % 将(元胞)cell转换为(字符)char 如:char({12));,将元胞{12}转换为字符串'12'
str2double(a) % 将(字符)char转换为(数值)double
cellstr(a) % 将(字符)char转换为(元胞)cell 如:cellstr(' ');,将'空char类型'转换为'空cell类型'
T = timetable2table(TT) % 将时间表转换为表 如:Time = datetime({'2015-12-18'});
TT = table2timetable(T) % 将表转换为时间表
% 常用的复合型转换
cell2table(num2cell(A)) % 将(数值)num 转化为(表)table(num - cell - table)
cell2mat(table2cell(A)) % 将(表)table 转化为(数值)num(table - cell - num)
time(1) = num2str(year(temp_datetime)); % 求出内部格式日期的年
time(2) = num2str(month(temp_datetime)); % 求出内部格式日期的月
time(3) = num2str(day(temp_datetime)); % 求出内部格式日期的天
time(4) = num2str(hour(temp_datetime)); % 求出内部格式日期的小时
time(5) = num2str(minute(temp_datetime)); % 求出内部格式日期的分钟
time(6) = num2str(second(temp_datetime)); % 求出内部格式日期的秒
length(A) % 获得矩阵中(长度或宽度)的最大值,多维矩阵同理,空矩阵长度为0;
height(A) % table表行数,备注:仅限于Matlab中的table类型数据使用
width(A) % table表列数,备注:仅限于Matlab中的table类型数据使用
[m, n] = size(A) % 获得矩阵的行数与列数
numel(A) % 获得矩阵的所有元素个数
ndims(A) % 获得矩阵的维度数
[row, col] = find(X); % 返回数据 X 中所有非零元素对应的(索引)。
[row, col, v] = find(X); % 返回数据 X 中所有非零元素对应的(索引和值)。
k = find(~X) % 对数组 X 使用逻辑 not 运算符以查找零值(得到对应的索引)。
k = find( X < 10, 5 ) % 查找矩阵 X 中前五个小于 10 的元素(得到对应的索引)。
k = find( y == 0.3 ) % 查找特定的整数值(得到对应的索引)。
删除线格式
删除线格式
删除线格式
删除线格式
删除线格式
例如:c = a/3 + num + b*9 - 15;
代码行1:c = a/3 + num + ...
代码行2: b*9 ...
代码行3: -15;
log10(x) % lg(x)
log(x) % ln(x)
exp(1) % e
exp(5) % e^5
M = mean(A); % 如果 A 为矩阵,则 mean(A) 返回包含每列均值的行向量。
S = std(A); % 如果 A 为矩阵,则 std(A) 返回包含每列标准差的行向量。
CV 又叫变异系数、离散系数、相对偏差(rsd);用百分数表示。
(1) cv = sd_value / mean_value * (100%)
(2) cv_sequence = SD_sequence ./ Mean_sequence;
% 点除:如果a、b是矩阵,a./b就是a、b中对应的每个元素相除,得到一个新的矩阵。
[B, ind] = sort(A) % 升序(从小到大),B是A排序后的向量,A保持不变;ind是B中每一项对应于A中项的索引。
(1)任务描述:将mat数组转换为table类型:table(A)
报错提示:错误使用 writetable —— 位置1的索引超出数组范围(不能超过1)。
备注:" 位置x "指的就是数组的第x维。
原因分析:table 里面的每一个数据都是一个 table,而内部 table 的数据全为数字。
(2)任务描述:将全为数字的元胞cell转换为mat格式:cell2mat(A)
报错提示:错误使用 cat 要串联的数组的维度不一致。
原因分析:cell 数组中,每个元胞中存储的格式并非 double,而是 char 数组,而且每一行char的长度不一致。
- 情况1:cell 数组中存储的都是 double 类型,只不过都以 char 类型显示。
– 解决方案:A = cellfun(@str2num, A) 即将所有的 char 类型数组循环采用 str2num(A) 进行格式转换。- 情况2:cell 类型中存储的既有 double 类型也有 char(英文等等),但都以 char 类型显示。
– 解决方案:该情况不应成立。且 char(英文等等)转换为 double 类型时,必定存在数据丢失。