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)