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'==str

ans =

  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 =

  logical

   1

如何去反转一个字符串

%方法一:
>> 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: 16
    number: 2.0090e+09
    grades: [2×3 double]

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

>> student.grades

ans =

    80    70    60
    50    90    70
>> student.name

ans =

    '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 数组:

    name
    id
    number
    grades
>> student(2)

ans = 

  包含以下字段的 struct:

      name: 'Lisi'
        id: 18
    number: 2.0090e+09
    grades: [2×3 double]

>> student(1)

ans = 

  包含以下字段的 struct:

      name: 'Linda'
        id: 16
    number: 2.0090e+09
    grades: [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 数组:

    development
    sales
    management
    quality
    documentation

查找特定数值:

>> 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 数组:

    fiveYears
    tenYears
    fifteenYears

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

 [~, sales_5years, ~, ~, docu_5years] = years.fiveYears

sales_5years =

  1×2 cell 数组

    {'Howe'}    {'Burns'}


docu_5years =

  1×2 cell 数组

    {'Lloyd'}    {'Young'}

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

 [ sales_5years, docu_5years] = years.fiveYears

sales_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 数组:

    develop
    document

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

>> for k=1:3
   depts(k,:)
end

ans = 

  包含以下字段的 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

删除结构体中的某些字段

>> depts

depts = 

  包含以下字段的 3×1 struct 数组:

    develop
    document
>> 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.nest

ans = 

  包含以下字段的 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).data

ans =

     3     4     7
     8     0     1

>> A(2).data

ans =

     9     3     2
     7     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};
A

A =

  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;
A

A =

  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     3
     0     5     8
     7     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     6
     3     5     7
     4     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     2
     3     4
     5     6
     7     8

>> C=cat(2,A,B)

C =

     1     2     5     6
     3     4     7     8

>> C=cat(3,A,B)

C(:,:,1) =

     1     2
     3     4


C(:,:,2) =

     5     6
     7     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     7
     2     5     8
     3     6     9
>> A=magic(4)

A =

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

>> B=reshape(A,[],2)%可以指定 [] 的单个维度大小,以便自动计算维度大小,以使 B 中的元素数与 A 中的元素数相匹配

B =

    16     3
     5    10
     9     6
     4    15
     2    13
    11     8
     7    12
    14     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 =

    86
    98
    85
xlswrite('Score.xlsx',M,1,'E2:E4')

 

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

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

>> [Score Header]=xlsread('Score.xlsx')

Score =

    95    83    80    86
   100    98    96    98
    80    94    81    85


Header =

  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:11
      fprintf(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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/102865.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探究IP路由的工作原理与路由表查找规则

文章目录 一、定义二、IP连通的前提三、路由表1. 作用2. 路由表字段内容3. 路由表查表规则4. 路由信息的来源5. 路由表写表规则6. 路由优先级 四、常用命令 首先可以看下思维导图,以便更好的理解接下来的内容。 一、定义 路由器是网络中负责将数据报文在不同IP网段…

无涯教程-JavaScript - CUBESETCOUNT函数

描述 CUBESETCOUNT函数返回集合中的项目数。 语法 CUBESETCOUNT (set)争论 Argument描述Required/Optionalset Microsoft Excel表达式的文本字符串,其输出为由CUBESET函数定义的集合。 OR CUBESET功能。 OR 对包含CUBESET函数的单元格的引用。 Required Notes 求值CUBESE…

深度学习推荐系统(二)Deep Crossing及其在Criteo数据集上的应用

深度学习推荐系统(二)Deep Crossing及其在Criteo数据集上的应用 在2016年, 随着微软的Deep Crossing, 谷歌的Wide&Deep以及FNN、PNN等一大批优秀的深度学习模型被提出, 推荐系统全面进入了深度学习时代, 时至今日&#xff0c…

stm32f1xx单片机拦截中断源代码

这个是实现后的效果,可以看到已经没有中断的效果了 这个是拦截前的效果可以看到电平是在变化的 实现原理非常简单:一句话搞定: if(TIM2->CNTTIM2->ARR-5)TIM2->CNT-5; 以下是完整的代码:是用来补充说明和筹字数的 /* …

【LeetCode】双指针妙解有效三角形的个数

Problem: 611. 有效三角形的个数 文章目录 题目分析讲解算法原理复杂度Code 题目分析 首先我们来分析一下本题的思路 看到题目中给出的示例 题目的意思很简单,就是将给到的数字去做一个组合,然后看看这三条边是否可以构成三角形。那判断的方法不用我说&a…

JY901B智能9轴加速度计陀螺仪角度传感器

今日学习使用JY901B智能9轴加速度计陀螺仪角度传感器 本文会先使用上位机获取数据作演示,后介绍它的数据表发送原理。 文章提供详细的原理讲解,测试工程下载,代码讲解,本人有多注释的习惯,希望对大家有帮助。 我的J…

【MetaAI】2023年MetaAI发布的开源模型和工具

MetaAI开源模型和工具 MetaAILlamaSegment AnythingDINOv2ImageBindMMSLimaVoiceboxMusicGenLlama 2AudioCraftSeamlessM4T MetaAI Meta 首席执行官扎克伯格表示,与其他研究者分享 Meta 公司开发的模型可以帮助该公司促进创新、发现安全漏洞和降低成本。他今年 4 月…

第 361 场 LeetCode 周赛题解

A 统计对称整数的数目 枚举 x x x class Solution { public:int countSymmetricIntegers(int low, int high) {int res 0;for (int i low; i < high; i) {string s to_string(i);if (s.size() & 1)continue;int s1 0, s2 0;for (int k 0; k < s.size(); k)if …

读余华小说《兄弟》

上部读完的一些笔记和思考&#xff0c;下部 TODO 时间&#xff1a;上世纪6、70年代 地点&#xff1a;刘镇 人物&#xff1a;故事中的兄弟指的是&#xff1a;宋钢(兄)&#xff0c;李光头&#xff08;弟&#xff09;&#xff0c;如下为简单的人物和命运图 一些故事&#xff1a;…

Debezium的三种部署方式

Debezium如何部署 debezium 有下面三种部署方式,其中最常用的就是 kafka connect。 kafka connect 一般情况下,我们通过 kafka connect 来部署 debezium,kafka connect 是一个框架和运行时: source connectors:像 debezium 这样将记录发送到 kafka 的source connectors…

centos安装nginx实操记录(加安全配置)

1.下载与安装 yum -y install nginx2.启动命令 /usr/sbin/nginx -c /etc/nginx/nginx.conf3.新建配置文件 cd /etc/nginx/conf.d vim index.conf配了一个负责均衡&#xff0c;如不需要&#xff0c;可将 server localhost: 多余的去掉 upstream web_server{server localhost…

Ansible学习笔记11

Command和Shell模块&#xff1a; 两个模块都是用于执行Linux命令的&#xff0c;这个对于命令熟悉的工程师来说&#xff0c;用起来非常high。 Shell模块跟Command模块差不多&#xff08;Command模块不能执行一类$HOME、> 、<、| 等符号&#xff0c;但是Shell是可以的。&…

【sgTransfer】自定义组件:带有翻页、页码、分页器的穿梭框组件,支持大批量数据的穿梭显示。

特性&#xff1a; 表格宽度可以自定义翻页器显示控件可以自定义列配置项可以设置显示字段列名称、宽度、字段名可以配置搜索框提示文本&#xff0c;支持搜索过滤穿梭框顶部标题可以自定义左右箭头按钮文本可以设置 sgTransfer源码 <template><div :class"$opti…

AMEYA360代理 | 佰维eMMC、LPDDR存储芯片赋能电视终端流畅体验

5G、AI、VR、AR等技术的发展&#xff0c;助推智能电视、机顶盒等电视终端成为智能家居领域不可忽视的重要设备。随着4K超高清(UHD)技术、虚拟现实技术(VR)和增强现实技术(AR)的普及&#xff0c;并向8K超高清技术不断渗透&#xff0c;电视终端将可以为消费者提供更清晰的视觉体验…

mapboxGL3新特性介绍

概述 8月7日&#xff0c;mapboxGL发布了3版本的更新&#xff0c;本文带大家一起来看看mapboxGL3有哪些新的特性。 新特新 如上图所示&#xff0c;是mapboxGL官网关于新版的介绍&#xff0c;大致翻译如下&#xff1a; 增强了web渲染的质量、便捷程度以及开发人员体验&#xff…

前端面试中Vue的有经典面试题一

1. 谈谈你对MVVM开发模式的理解 MVVM分为Model、View、ViewModel三者。 Model&#xff1a;代表数据模型&#xff0c;数据和业务逻辑都在Model层中定义&#xff1b; View&#xff1a;代表UI视图&#xff0c;负责数据的展示&#xff1b; ViewModel&#xff1a;负责监听Model中…

Matlab(画图初阶)

目录 1.plot()函数 2. hold(添加新绘图是否保留旧绘图) 3. Plot Style 3.1 线型 3.2 标记 3.3 颜色 ​编辑 4. legend() 5.X 、Y and Title&#xff1f; 6. Text()和annotation() 7.line(创建基本线条) 7.1 基本语法 7.2 指定线条属性 7.3 更改线条属性 8.图像属性 8.1 …

HttPClient简介及示例:学习如何与Web服务器进行通信

文章目录 前言一、引入依赖二、使用步骤1.创建被调用者2.创建调用者三、结果被调用者服务&#xff1a;调用者服务&#xff1a; 总结 前言 欢迎来到本篇博客&#xff0c;这是一个关于HttPClient的入门案例的指南。&#x1f389; 在今天的网络世界中&#xff0c;与服务器进行数据…

精品基于SpringCloud实现的电影院购票系统设计-微服务-分布式

《[含文档PPT源码等]精品基于SpringCloud实现的电影院购票系统设计的设计与实现-微服务-分布式》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 框架&#xff1a;springcloud JDK版…

JavaScript运行机制与实践应用

一、JavsScript运行机制 1、JavaScript 是一种解释型语言&#xff0c;它的执行机制主要包括以下几个步骤&#xff1a; 2、事件循环 3、JavaScript运行模型 4、JavaScript任务 5、JavaScript宏任务和微任务 6、案例分析 console.log(script start) setTimeout(function () {co…