cell与struct

matcovnet基础

matconvnetm描述某一层的基本用法是struct+cell

struct可以理解为matlab版的键值对(dictionary)
cell可以理解为c里面的结构体,他的操作很随意,可以任意加东西进去

下面有一段代码可以很好的体会这个问题

%Cell Test
clear; clc; close all
%% Cell里的元素是任意的
C = {
     1,2,3;
     'text',rand(5,10,2),{
     11; 22; 33}}
 %可以为空
 CNull = {
     }
 %% 切片操作
 C = {
     '2017-08-16',[56 67 78]}
 C(2,:) = {
     '2017-08-17',[58 69 79]};
 C(3,:) = {
     '2017-08-18',[60 68 81]}
 C(1,:)
 %% 以下两句是等效的
 C = cell(3,4,2);
 C{
     3,4,2} = [];%与python的list非常像
 %% 数据转换
 C = {
     1,2,3;
     'text',rand(5,10,2),{
     11; 22; 33}} 
 a = C(2,3)
 %b = cell2mat(a)
 d = a(1)
 % matlab中矩阵是带中括号的,任何运算实际上是矩阵运算(默认中括号),也是中括号之间的运算。
  C = {
     1,2,3;
     'text',rand(5,10,2),[11; 22; 33]} 
 a = C(2,3)
 %在把数据类型改过来
 b = cell2mat(a)
 c = b*2

下面来看看struct

%structTest
%格式:structName.fieldName
%% basic use
data.x = linspace(0,2*pi);
data.y = sin(data.x);
data.title = 'y = sin(x)'
figure(1)
plot(data.x,data.y)
title(data.title)
%% field and value,等同于pytorch的键值对
field = 'f';
value = {
     'some text';[10, 20, 30];magic(5)};
s = struct(field,value)
%%
field1 = 'f1';  value1 = zeros(1,10);
field2 = 'f2';  value2 = {
     'a', 'b'};
field3 = 'f3';  value3 = {
     pi, pi.^2};
field4 = 'f4';  value4 = {
     'fourth'};
s = struct(field1,value1,field2,value2,field3,value3,field4,value4)

你可能感兴趣的:(matconvnet初学笔记,matlab)