当前位置: 首页 > news >正文

Matlab(变量与文本读取)

目录

1.变量(数据)类型转换

 1.1 字符

 1.2 字符串

1.3 逻辑操作与赋值

2.Struct结构体数组

2.1函数的详细介绍:

2.1.1 cell2struct

 2.1.1.1 垂直维度转换

 2.1.1.2 水平维度转换

2.1.1.3 部分进行转换

2.1.2 rmfield

2.1.3 fieldnames(查看结构体中的属性值)

3. 嵌套结构

4.Cell元胞数组

 4.1创建对象以及访问

4.2 Cell元胞数组函数

4.2.1 num2cell(转换为相同大小的元胞数组)

4.2.2 matcell(转换为在元胞中包含子数组的元胞数组)

5. 多维数组

 5.1 cat()函数

5.2 reshape()函数

6.文件访问

6.1 save()

6.2 load()

7.Excel文件读取

7.1 xlsread()

 7.2 xlswrite()

7.3 低级文件的输入/输出


1.变量(数据)类型转换

常见类型转换
double()转换为双精度
single()转换为单精度
int8()转换为8位有符号整数
int16()转换为16位有符号整数
int32()转换为32位有符号整数
int64()转换为64位有符号整数
uint8()转换为8位无符号整数
uint16()转换为16位无符号整数
uint32()转换为32位无符号整数
uint64()转换为64位无符号整数

在Matlab中我们可以直接对类型进行转换:

 1.1 字符

       在Matlab中,字符是由引号(单引号或者双引号)括起来的表达式,字符可以包含字母、数字、符号和空格,用于表示文本数据,每一个字符都对应着一个ASSCII码值

ASCII码详细介绍

 1.2 字符串

       在MATLAB中,字符串是由引号(单引号或双引号)括起来的字符序列。字符串可以包含字母、数字、符号和空格,用于表示文本数据。

 我们在前面讲过怎么将矩阵进行合并,今天我们试着将字符串进行拼接:

  • 用方括号进行拼接

水平拼接

>> s1='Lingda's1 ='Lingda'>> s2='lisi's2 ='lisi'>> s3=[s1,s2]s3 ='Lingdalisi'

 垂直拼接

       显然这种方式是错误的,因为两个字符串的长度不一致,故维度不一致,这种拼接的方式仅限于长度一致的字符串才可以进行拼接

>> s3=[s1;s1]s3 =2×6 char 数组'Lingda''Lingda'
  • 用函数进行拼接

垂直拼接

>> s3=vertcat(s1,s1)s3 =2×6 char 数组'Lingda''Lingda'

水平拼接

>> s3=horzcat(s1,s1)s3 ='LingdaLingda'>> s3=horzcat(s1,s2)s3 ='Lingdalisi'

1.3 逻辑操作与赋值

在数组中每个位置代表的着一个对应的索引,字符串也不例外,一个单个的字符也对应着一个索引

>> str='aadfgtaad'str ='aadfgtaad'>> str(3)ans ='d'

在Matlab中索引的位置是从1开始的,所以索引为3的位置上是'd'

假设我们要寻找字符为'a'的索引有哪些?该怎么去找呢?

>> 'a'==strans =1×9 logical 数组1   1   0   0   0   0   1   1   0>> str=='a'ans =1×9 logical 数组1   1   0   0   0   0   1   1   0

这种查找方法,如果匹配的话,索引位置上为1,不匹配的话为0

如果我们需要对两个字符串进行比较,我们需要用strcmp()函数

>>  help strcmp
strcmp - 比较字符串此 MATLAB 函数 比较 s1 和 s2,如果二者相同,则返回 1 (true),否则返回 0(false)。如果文本的大小和内容相同,则它们将视为相等。返回结果 tf 的数据类型为 logical。tf = strcmp(s1,s2)
>> s1='happy's1 ='happy'>> s2='happy's2 ='happy'>> strcmp(s1,s2)ans =logical1

如何去反转一个字符串

%方法一:
>> s1='I like beautiful gril's1 ='I like beautiful gril'>> s2=s1(size(s1,2):-1:1)s2 ='lirg lufituaeb ekil I'
%方法二:
>> s2=s1(length(s1):-1:1)s2 ='lirg lufituaeb ekil I'%方法三:>> help reverse
reverse - 反转字符串中的字符顺序此 MATLAB 函数 反转 str 中字符的顺序。newStr = reverse(str)
>> reverse(s1)ans ='lirg lufituaeb ekil I'
%方法四:
>> help flip
flip - 翻转元素顺序此 MATLAB 函数 返回的数组 B 具有与 A 相同的大小,但元素顺序已反转。B 中重新排序的维度取决于 A 的形状:B = flip(A)B = flip(A,dim)
>> flip(s2)ans ='I like beautiful gril'

2.Struct结构体数组

       在MATLAB中,结构体是一种用于存储组织数据的数据类型。结构体由多个字段组成,每个字段都可以存储不同类型的数据。

以下是一些关于结构体的基本操作:

  • 创建结构体:
s.field1 = value1;
s.field2 = value2;
  • 访问结构体字段:
value = s.field;
  • 更新结构体字段的值:
s.field = new_value;
  • 删除结构体字段:
s = rmfield(s, 'field');
  • 检查结构体是否包含某个字段:
isfield(s, 'field');
  • 获取结构体的字段名称:
field_names = fieldnames(s);
  • 创建结构体数组:
s(1).field = value1;
s(2).field = value2;
  • 访问结构体数组的元素:
value = s(index).field;

       对Java了解过的同学很容易将结构体将Java中的类想在一起,两者都是可以存储不同数据,对象以及属性

让我们接下来手动创建一个结构体:

>> student.name='Linda';
>> student.id=16;
>> student.number=2009014034;
>> student.grades=[80 70 60;50 90 70]student = 包含以下字段的 struct:name: 'Linda'id: 16number: 2.0090e+09grades: [2×3 double]

我们可以通过 . 的方式拿到结构体中的特定值

>> student.gradesans =80    70    6050    90    70
>> student.nameans ='Linda'

       那么结构体中是不是只允许有一个数据呢?NONONO,当然不是,只是我们需要和第一种数据做区分而已

>> student(2).name='Lisi';%用(number)进行区分
student(2).id=18;
student(2).number=2009014036;
>> student(2).grades=[90 50 60;40 80 60]student = 包含以下字段的 1×2 struct 数组:nameidnumbergrades
>> student(2)ans = 包含以下字段的 struct:name: 'Lisi'id: 18number: 2.0090e+09grades: [2×3 double]>> student(1)ans = 包含以下字段的 struct:name: 'Linda'id: 16number: 2.0090e+09grades: [2×3 double]
结构体中常用函数
cell2struct将单元格数组转换为结构数组
fieldnames结构的字段名或对象的公共字段
getfield结构体数组字段
isfield确定输入是否为结构体数组字段
isstruct确定输入是否为结构数组
orderfields结构数组的顺序字段
rmfield从结构中删除字段
setfield给结构数组字段赋值
struct创建结构数组
struct2cell将结构转换为单元格数组
structfun对标量结构的每个域应用函数

2.1函数的详细介绍

2.1.1 cell2struct

structArray = cell2struct(cellArray, fields, dim)
%structArray = cell2struct(cellArray, fields, dim) 通过元胞数组 cellArray 中包含的信息创建一个结构体数组 structArray。%fields 参数指定结构体数组的字段名称。此参数是一个字符数组、字符向量元胞数组或字符串数组。%dim 参数向 MATLAB® 指示创建结构体数组时要使用的元胞数组的轴。使用数值 double 指定 dim。

案例:

 创建初始元胞数组employees:

>> devel = {{'Lee','Reed','Hill'}, {'Dean','Frye'}, ...{'Lane','Fox','King'}};
sales = {{'Howe','Burns'}, {'Kirby','Ford'}, {'Hall'}};
mgmt = {{'Price'}, {'Clark','Shea'}, {'Sims'}};
qual = {{'Bates','Gray'}, {'Nash'}, {'Kay','Chase'}};
docu = {{'Lloyd','Young'}, {'Ryan','Hart','Roy'}, {'Marsh'}};
>> employees = [devel; sales; mgmt; qual; docu]employees =5×3 cell 数组{1×3 cell}    {1×2 cell}    {1×3 cell}{1×2 cell}    {1×2 cell}    {1×1 cell}{1×1 cell}    {1×2 cell}    {1×1 cell}{1×2 cell}    {1×1 cell}    {1×2 cell}{1×2 cell}    {1×3 cell}    {1×1 cell}

 2.1.1.1 垂直维度转换

 将元胞数组转换为沿维度1(垂直维度)的结构体:

 我们需要自定义垂直维度中的每行的标题:

>> rowTitles={'development', 'sales', 'management','quality', 'documentation'}rowTitles =1×5 cell 数组{'development'}    {'sales'}    {'management'}    {'quality'}    {'documentation'}

将元胞数组转换为于此维度相关的结构体数组dept:

>> depts = cell2struct(employees, rowTitles, 1)depts = 包含以下字段的 3×1 struct 数组:developmentsalesmanagementqualitydocumentation

查找特定数值:

>> depts(2:3).development%先确定行再确定哪个属性ans =1×2 cell 数组{'Dean'}    {'Frye'}ans =1×3 cell 数组{'Lane'}    {'Fox'}    {'King'}

 2.1.1.2 水平维度转换

将元胞数组转换为沿维度2(水平维度)的结构体:

  我们需要自定义水平维度中的每行的标题:

>> colHeadings = {'fiveYears' 'tenYears' 'fifteenYears'}colHeadings =1×3 cell 数组{'fiveYears'}    {'tenYears'}    {'fifteenYears'}

将元胞数组转换为于此维度相关的结构体数组dept:

>> years = cell2struct(employees, colHeadings, 2)years = 包含以下字段的 5×1 struct 数组:fiveYearstenYearsfifteenYears

使用列向结构体时,将显示已在公司工作至少 5 年的销售和文件部门的员工数

 [~, sales_5years, ~, ~, docu_5years] = years.fiveYearssales_5years =1×2 cell 数组{'Howe'}    {'Burns'}docu_5years =1×2 cell 数组{'Lloyd'}    {'Young'}

在上方进行查找的时候,将不需要的列用占位符进行占位,不然会造成错误:

 [ sales_5years, docu_5years] = years.fiveYearssales_5years =1×3 cell 数组{'Lee'}    {'Reed'}    {'Hill'}docu_5years =1×2 cell 数组{'Howe'}    {'Burns'}

2.1.1.3 部分进行转换

如果我们仅仅要转换元胞数组的第一行和最后一行,我们该怎么操作呢?

>> rowTitlesOnly={'develop','document'}rowTitlesOnly =1×2 cell 数组{'develop'}    {'document'}>> depts=cell2struct(employees([1,5],:),rowTitlesOnly,1)depts = 包含以下字段的 3×1 struct 数组:developdocument

 如果我们想知道结构体中有哪些人员,我们只需要这样就可以解决:

>> for k=1:3depts(k,:)
endans = 包含以下字段的 struct:develop: {'Lee'  'Reed'  'Hill'}document: {'Lloyd'  'Young'}ans = 包含以下字段的 struct:develop: {'Dean'  'Frye'}document: {'Ryan'  'Hart'  'Roy'}ans = 包含以下字段的 struct:develop: {'Lane'  'Fox'  'King'}document: {'Marsh'}

2.1.2 rmfield

删除结构体中的某些字段

>> deptsdepts = 包含以下字段的 3×1 struct 数组:developdocument
>> rmfield(depts,'develop')ans = 包含以下字段的 3×1 struct 数组:document

2.1.3 fieldnames(查看结构体中的属性值)

>> fieldnames(depts)ans =2×1 cell 数组{'develop' }{'document'}

3. 嵌套结构

        Matlab中的嵌套结构是指在一个结构体中嵌套另一个结构体。通过这种方式,可以创建更复杂的数据结构,以便更好地组织和管理数据。嵌套结构可以通过使用点运算符来访问内部结构体的字段。

>> A = struct('data', [3 4 7; 8 0 1], 'nest', ...
struct('testnum', 'Test 1', ...
'xdata', [4 2 8],'ydata', [7 1 6]));
A(2).data = [9 3 2; 7 6 5];
A(2).nest.testnum = 'Test 2';
A(2).nest.xdata = [3 4 2];
A(2).nest.ydata = [5 0 9];
A.nestans = 包含以下字段的 struct:testnum: 'Test 1'xdata: [4 2 8]ydata: [7 1 6]ans = 包含以下字段的 struct:testnum: 'Test 2'xdata: [3 4 2]ydata: [5 0 9]
>> A(1).dataans =3     4     78     0     1>> A(2).dataans =9     3     27     6     5>> A(1).nest.testnum%结构体中的结构体ans ='Test 1'

4.Cell元胞数组

  1. 存储异构数据的另外一种方法
  2. 类似于矩阵,但是每个条目包含不同类型的数据
  3. 通过将索引括在圆括号()中可以引用元胞集,使得花括号{}进行索引来访问元胞的内容

 4.1创建对象以及访问

方法一

>> A(1,1)={[1 4 3; 0 5 8; 7 2 9]};
A(1,2)={'Anne Smith'};
A(2,1)={3+7i};
A(2,2)={-pi:pi:pi};
AA =2×2 cell 数组{3×3 double        }    {'Anne Smith'}{[3.0000 + 7.0000i]}    {1×3 double  }

方法二

>> A{1,1}=[1 4 3; 0 5 8; 7 2 9];
A{1,2}='Anne Smith';
A{2,1}=3+7i;
A{2,2}=-pi:pi:pi;
AA =2×2 cell 数组{3×3 double        }    {'Anne Smith'}{[3.0000 + 7.0000i]}    {1×3 double  }

为什么Cell元胞数组能精确的找到对应的值呢?

  • 单元格数组中的每个条目都持有一个指向数据结构的指针
  • 同一单元阵列的不同单元可以指向不同类型的数据结构

>> C=A(1,1)C =1×1 cell 数组{3×3 double}>> C=A{1,1}%{}显示具体的元素C =1     4     30     5     87     2     9

4.2 Cell元胞数组函数

Cell元胞数组函数
cell创建单元阵列
cell2mat将元胞数组转换为基础数据类型的普通数组
cell2struct将元胞数组转换为结构体数组
celldisp显示元胞数组的内容
cellfun对元胞数组中的每个元胞应用函数
cellplot以图的方式显示元胞数组的结构体
cellstr转换为字符向量元胞数组
iscell确定输入是否为元胞数组
mat2cell将数组转换为在元胞中包含子数组的元胞数组
num2cell将数组转换为相同大小的元胞数组
struct2cell将结构体转换为元胞数组

4.2.1 num2cell(转换为相同大小的元胞数组)

%C = num2cell(A) 通过将 A 的每个元素放置于 C 的一个单独元胞中,来将数组 A 转换为元胞数组 C。num2cell 函数转换具有任意数据类型(甚至是非数值类型)的数组。
C = num2cell(A)
%C = num2cell(A,dim) 将 A 的内容划分成 C 中单独的元胞,其中 dim 指定每个元胞包含 A 的哪个维度。
C = num2cell(A,dim)

 案例实现

%数字元胞数组
>> a=magic(3)a =8     1     63     5     74     9     2>> C=num2cell(a)C =3×3 cell 数组{[8]}    {[1]}    {[6]}{[3]}    {[5]}    {[7]}{[4]}    {[9]}    {[2]}
%字符串元胞数组
>> a = ['four';'five';'nine']a =3×4 char 数组'four''five''nine'>> c = num2cell(a)c =3×4 cell 数组{'f'}    {'o'}    {'u'}    {'r'}{'f'}    {'i'}    {'v'}    {'e'}{'n'}    {'i'}    {'n'}    {'e'}

4.2.2 matcell(转换为在元胞中包含子数组的元胞数组)

%C = mat2cell(A,dim1Dist,...,dimNDist) 将数组 A 划分为更小的数组,并在元胞数组 C 中返回它们。向量 dim1Dist,...dimNDist 指定如何划分 A 的行、列和(如果适用)更高维度。C 中较小的数组可以具有不同大小。A 可以包含任何数据类型。
C = mat2cell(A,dim1Dist,...,dimNDist)
%C = mat2cell(A,rowDist) 将数组 A 划分为一个 n×1 元胞数组 C,其中 n 等于 rowDist 中元素的数量。
C = mat2cell(A,rowDist)

例如:如果A是60*50数组,则可以将此参数指定为[10 20 30],[25 25]来划分A,如上图:

>> A=rand(60,50);
>> C=mat2cell(A,[10 20 30],[25 25])C =3×2 cell 数组{10×25 double}    {10×25 double}{20×25 double}    {20×25 double}{30×25 double}    {30×25 double}

        对于 A 的第 K 个维度,在指定对应向量 dimKDist 的元素时,需满足 sum(dimKDist) 等于第 K 个维度的大小,如果 A 的第 K 个维度的大小为零,则应将对应向量 dimKDist 指定为空数组 [],如代码中所示。

>> A = rand(3,0,4);
C = mat2cell(A,[1 2],[],[2 1 1])C =空的 2×0×3 cell 数组

5. 多维数组

 5.1 cat()函数

>> A=[1 2;3 4]; B=[5 6;7 8];
>> C=cat(1,A,B)C =1     23     45     67     8>> C=cat(2,A,B)C =1     2     5     63     4     7     8>> C=cat(3,A,B)C(:,:,1) =1     23     4C(:,:,2) =5     67     8

5.2 reshape()函数

%B = reshape(A,sz) 使用大小向量 sz 重构 A 以定义 size(B)。例如,reshape(A,[2,3]) 将 A 重构为一个 2×3 矩阵。sz 必须至少包含 2 个元素,prod(sz) 必须与 numel(A) 相同。
B = reshape(A,sz)
%B = reshape(A,sz1,...,szN) 将 A 重构为一个 sz1×...×szN 数组,其中 sz1,...,szN 指示每个维度的大小。可以指定 [] 的单个维度大小,以便自动计算维度大小,以使 B 中的元素数与 A 中的元素数相匹配。例如,如果 A 是一个 10×10 矩阵,则 reshape(A,2,2,[]) 将 A 的 100 个元素重构为一个 2×2×25 数组
B = reshape(A,sz1,...,szN)

>> A=[1 2 3 4 5 6 7 8 9]A =1     2     3     4     5     6     7     8     9>> B=reshape(A,[3,3])%重新分配成3*3的数组B =1     4     72     5     83     6     9
>> A=magic(4)A =16     2     3    135    11    10     89     7     6    124    14    15     1>> B=reshape(A,[],2)%可以指定 [] 的单个维度大小,以便自动计算维度大小,以使 B 中的元素数与 A 中的元素数相匹配B =16     35    109     64    152    1311     87    1214     1
检查变量和变量状态的函数
isinteger确定输入是否为整型数组
islogical判断输入是否为逻辑阵列
isnan检测非数字元素(NaN)
isnumeric确定输入是否为数字数组
isprime检测数组的质数元素
isreal确定所有数组元素是否都是实数
iscell确定输入是否为元胞数组
ischar确定输入是否为字符数组
isempty确定输入是否为空数组
isequal确定数组在数值上是否相等
isfloat确定输入是否为浮点数组
isglobal确定输入是否是全局变量
ishandle检测有效的图形对象的句柄
isinf检测数组的无限元素

6.文件访问

Matlab就相当于是一个中间加工厂(计算),我们需要将其计算的结果保存在我们的文件中

6.1 save()

  • 不加 -ascii

 

 打开是乱码(经过了压缩),这种模式的存储不方便我们人为进行查看

  • 加 -ascii

 这种方式的存储我们比较容易识别

6.2 load()

       在读取文件的时候,如果存储的时候用save -ascii 的方式进行存储,下载的时候同样也需要load -ascii

7.Excel文件读取

7.1 xlsread()

注意:所有读取的Excel表格应该和运行文件在同一文件夹,在读取的时候默认只能读数字部分,自动省略字符串部分的读取

 

 7.2 xlswrite()

我们需要将其平均值就算出来写出电子表格中

>> help mean
mean - 数组的均值此 MATLAB 函数 返回 A 沿大小不等于 1 的第一个数组维度的元素的均值。M = mean(A)M = mean(A,'all')M = mean(A,dim)M = mean(A,vecdim)M = mean(___,outtype)M = mean(___,nanflag)
>> M=mean(Score')'%mean是以列为单位进行计算,我们首先对元素数组取转置,然后再进行计算M =869885
xlswrite('Score.xlsx',M,1,'E2:E4')

 

  xlswrite('Score.xlsx',{'平均值'},1,'E1')%写列题目

 那么我们应该怎么在Excel表格中获取文本呢?

>> [Score Header]=xlsread('Score.xlsx')Score =95    83    80    86100    98    96    9880    94    81    85Header =4×5 cell 数组{0×0 char}    {'语文'  }    {'数学'  }    {'英语'  }    {'平均值' }{'小飞'  }    {0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}{'小刘'  }    {0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}{'小鹏'  }    {0×0 char}    {0×0 char}    {0×0 char}    {0×0 char}

7.3 低级文件的输入/输出

  • 在字节或字符级别读取和写入文件
  • 文件ID为fid
  • 文件中的位置由可移动的指针指定

低级文件I/O功能
函数描述
fopen打开一个文件,或获取打开文件的信息
fclose关闭一个或所有打开的文件
fscanf从文本文件读取数据
fprintf将数据写入文本文件
feof测试文件尾

打开和关闭文件:

fid=fopen('[filename]','[permission]');%打开文件
permission: 'r' 'r+' 'w' 'w+' 'a' 'a+'
'r':只读,默认
'w':只写,覆盖原内容
'a':附加数据到文件尾部
'r+':读与写
'w+':读与写,写时覆盖原内容
'a+':读与写,写时,附加到文件尾部
status=fclose(fid);%关闭文件

案例:

将余弦值写入文件:

>> x=0:pi/10:pi;
y=cos(x);
fid=fopen('cos.txt','w');
for i=1:11fprintf(fid,'%5.3f %8.4f\n',x(i),y(i));
end
>> fclose(fid);
>> type cos.txt

 IO的读写操作:

 读取文件:

>> fid = fopen('Date.txt','r'); i = 1;
while ~feof(fid)
name(i,:) = fscanf(fid,'%5c',1);
year(i)= fscanf(fid,'%d',1);
no1(i) = fscanf(fid,'%d',1);
no2(i) = fscanf(fid,'%d',1);
no3(i) = fscanf(fid,'%g',1);
no4(i) = fscanf(fid,'%g\n');
i=i+1;
end
fclose(fid);

相关文章:

Matlab(变量与文本读取)

目录 1.变量(数据)类型转换 1.1 字符 1.2 字符串 1.3 逻辑操作与赋值 2.Struct结构体数组 2.1函数的详细介绍: 2.1.1 cell2struct 2.1.1.1 垂直维度转换 2.1.1.2 水平维度转换 2.1.1.3 部分进行转换 2.1.2 rmfield 2.1.3 fieldnames(查…...

WebGPU学习(8)---使用RenderBundle

RenderBundle是什么 通常情况下,WebGPU每次绘制时都需要向RenderPassEncoder注册渲染命令。处理此绘图命令比 WebGL 内部执行的类似处理更快。但是,如果可以省略此命令注册过程,则可以能够更快地绘制。RenderBundle 就是实现这一点的。 Ren…...

【前端】常用功能合集

目录 js跳转到新标签打开PDF文件js每十个字符换行 es6用表达式或变量名作为对象的属性名 vuev-for插值、:style、:class父组件加载完后再加载子组件keep-alive缓存跨域请求第三方接口跨域请求之callback(不建议)读取本地文件浏览器播放提示音audio jquer…...

chatgpt谈论日本排放污水事件

W...Y的主页 😊 代码仓库分享 💕 近日,世界发生了让人义愤填膺的时间——日本排放核污水。这件事情是那么的突然且不计后果,海洋是我们全人类共同的财产,而日本却想用自己一己私欲将全人类的安全置之度外&#xff0c…...

Linux 查看当前目录大小

分析&回答 1. 查看当前目录下所有目录及子目录大小 du -h - . “.”代表当前目录下。也可以换成一个明确的路径 复制代码 2.查看当前文件目录各个文件夹大小 du -h --max-depth1 复制代码 查看指定目录 du -h --max-depth1 /path 复制代码 -h表示用K、M、G的人性化形…...

操作系统备考学习 day1 (1.1.1-1.3.1)

操作系统备考学习 day1 计算机系统概述操作系统的基本概念操作系统的概念、功能和目标操作系统的四个特征并发共享虚拟异步 操作系统的发展和分类操作系统的运行环境操作系统的运行机制 年初做了一个c的webserver 的项目,在学习过程中已经解除部分操作系统的知识&am…...

HTTP:http上传文件的原理及java处理方法的介绍

为了说明原理&#xff0c;以下提供一个可以上传多个文件的例子&#xff0c;html页面代码如下&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>http upload file</title> </head> <body>…...

[实习笔记] 字符串练习 (将大量的字符串用int值编码,然后通过int值二分快速查找某个字符串)

目录 介绍分析完整代码&#xff1a; 免责声明&#xff1a; 本文章是实习期间的C练习题目&#xff0c;可能会存在大量错误&#xff0c;文章仅作为个人笔记供作者自己方便观看. 介绍 在一个游戏里&#xff0c;可能会出现大量的NPC, 这些NPC有很多都是相同的名字. 存放NPC名字的…...

EMC VNX2代一键关机方法

由于不正确的EMC VNX存储系统的关机导致客户业务中断&#xff0c;数据丢失的案例数不胜数。不正确的关机顺序&#xff0c;很容易造成内存中的数据丢失&#xff0c;进而导致dirty cache&#xff0c;然后系统的LUN和POOL就无法online&#xff0c;业务中断。本文仅仅对EMC 2代产品…...

提升系统管理:监控和可观察性在DevOps中的作用

在不断发展的DevOps世界中&#xff0c;深入了解系统行为、诊断问题和提高整体性能的能力是首要任务之一。监控和可观察性是促进这一过程的两个关键概念&#xff0c;为系统的健康和性能提供了宝贵的可见性。虽然这些术语经常可以互换使用&#xff0c;但它们代表着理解和管理复杂…...

IIS搭建本地电脑服务器:通过内网穿透技术实现公网访问的步骤指南

1.前言 在网上各种教程和介绍中&#xff0c;搭建网页都会借助各种软件的帮助&#xff0c;比如网页运行的Apache和Nginx、数据库软件MySQL和MSSQL之类&#xff0c;为方便用户使用&#xff0c;还出现了XAMPP、PHPStudy、宝塔面板等等一系列集成服务&#xff0c;都是为了方便我们…...

Linux系统中驱动入门设备树DTS(经典)

设备树&#xff08;DTS:device tree source&#xff09;&#xff0c;字面意思就是一块电路板上设备如上图中CPU、DDR、I2C、GPIO、SPI等&#xff0c;按照树形结构描绘成的一棵树。按照策略和功能分离的思路&#xff0c;就是驱动代码&#xff08;功能&#xff09;和设备树DTS配置…...

关系型数据库与非关系型数据库类比

关系型数据库和非关系型数据库都有多种不同类型&#xff0c;每种类型都针对不同的数据存储需求和使用场景。以下是一些常见的关系型数据库和非关系型数据库类型&#xff1a; 关系型数据库类型&#xff1a; MySQL&#xff1a; 一种开源的关系型数据库管理系统&#xff0c;用于处…...

Ubuntu入门03——Ubuntu用户操作

1.Ubuntu如何进入root用户 进入ROOT用户的指令&#xff1a; Linux用su命令来切换用户&#xff1a; su root执行命令后&#xff0c;会提示你输入密码&#xff0c;而Ubuntu是没有设置root初始密码的。 若su命令不能切换root&#xff0c;提示su: Authentication failure&#x…...

输出图元(四)8-1 图元、屏幕坐标、指定二维世界坐标系统

用于图形应用的通用软件包称为计算机图形应用编程接口(CCAPI)它提供可以在C等程序设计语言中用来创建图形的函数库。如第3 章所指出的&#xff0c;函数库可以分成几种类型。创建图形时最先要做的一件事就是要描述显示场景的组成部分。图形的组成部分可以是树木和地形家具和墙壁…...

机器学习---决策树的划分依据(熵、信息增益、信息增益率、基尼值和基尼指数)

1. 熵 物理学上&#xff0c;熵 Entropy 是“混乱”程度的量度。 系统越有序&#xff0c;熵值越低&#xff1b;系统越混乱或者分散&#xff0c;熵值越⾼。 1948年⾹农提出了信息熵&#xff08;Entropy&#xff09;的概念。 从信息的完整性上进⾏的描述&#xff1a;当系统的有序…...

java解析json

1. 解析根节点为“{}”的json {"id": 1525490,"name": "有缘网" }代码&#xff1a; String jsonString "{\"id\":1525490\",\"name\":\"有缘网\"}";JSONObject jsonObject JSONObject.…...

PAT 1163 Dijkstra Sequence

个人学习记录&#xff0c;代码难免不尽人意。 Dijkstra’s algorithm is one of the very famous greedy algorithms. It is used for solving the single source shortest path problem which gives the shortest paths from one particular source vertex to all the other v…...

嵌入式学习之进程

1.进程间通信概述 UNIX系统IPC是各种进程通信方式的统称。 2.管道通信原理 特点&#xff1a; 1.它是半双工的&#xff08;即数据只能在一个方向上流动&#xff09;&#xff0c;具有固定的读端和写端。 2.它只能用于具有亲缘关系的进程之间通信&#xff08;也是父子进程或者…...

C#-单例模式

文章目录 单例模式的概述为什么会有单例模式如何创建单例模式1、首先要保证&#xff0c;该对象 有且仅有一个2、其次&#xff0c;需要让外部能够获取到这个对象 示例通过 属性 获取单例 单例模式的概述 总结来说&#xff1a; 单例 就是只有 一个实例对象。 模式 说的是设计模式…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...