Matlab入门-变量Cell array

本文详细介绍了MATLAB中Cell数组的声明与使用,包括不同方式的声明方法、多维Cell数组的创建,以及读取Cell数组内容的技巧。此外,还讲解了reshape()指令的使用,数据的存储与读取方法,以及特定变量的存储过程。

1、cell array的声明。

方式1
>> a(1,1)={[1 2 3; 4 5 6]};%大括号括起来。
>> a(1,2)={'sasasa'};
>> a(2,1)={3+7i};
>> a(2,2)={-pi:pi:pi};
>> a

a =

  2×2 cell 数组

    [2×3 double]    'sasasa'    
    [3.0000 + 7.0000i]    [1×3 double]
////////////////////////////////////////////////////////////////////////////////
方式2
>> a{1,1}=[12 2 3;4 5 6];%前面索引便是大括号;
>> a{1,2}='sasfa';
>> a

a =

  1×2 cell 数组

    [2×3 double]    'sasfa'

>> 

2 读取cell array中内容

>> a{1,1}=[12 2 3;4 5 6];
>> a{1,2}='sasfa';
>> a

a =

  1×2 cell 数组

    [2×3 double]    'sasfa'

>> a(1,1)%小括号

ans =

  cell

    [2×3 double]

>> a{1,1}%大括号

ans =

    12     2     3
     4     5     6

>> 

 3、Mutidimensional Array:多维cell array的创建。用命令cat()

>> a{1,1}=[1 2; 3 4];
>> a{1,2}='strng';
>> a{2,1}=1+2i;
>> a{2,2}=0:1:3;
>> b{1,1}=[3 4 ;5 6];
>> b{1,2}='hjkda';
>> b{2,1}=3+9i;
>> b{2,2}=0:2;4;
>> c=cat(3,a,b)
 2×2×2 cell 数组

c(:,:,1) = 

    [2×2 double]    'strng'     
    [1.0000 + 2.0000i]    [1×4 double]


c(:,:,2) = 

    [2×2 double]    'dsakl'     
    [3.0000 + 9.0000i]    [1×3 double]

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
>> d=cat(1,a,b)%第一个参数为1时是row的合并。

d =

  4×2 cell 数组

    [2×2 double]    'strng'     
    [1.0000 + 2.0000i]    [1×4 double]
    [2×2 double]    'dsakl'     
    [3.0000 + 9.0000i]    [1×3 double]

>> e=cat(2,a,b)%第一个参数为2时是列的合并。

e =

  2×4 cell 数组

    [2×2 double]    'strng'         [2×2 double]    'dsakl'     
    [1.0000 + 2.0000i]    [1×4 double]    [3.0000 + 9.0000i]    [1×3 double]

 4、reshape()指令,

>> A=[1:3;4:6];
>> B=reshape(A,3,2)

B =

     1     5
     4     3
     2     6
//////原来的行数乘列数等于现在的行数乘列数。

5、如何存储下载工作空间中的数据

%把工作空间中产生的数据存储到本地
>> clear
>> a=magic(4);
>> save mydata.mat%用记事本打开乱码
>> save madata2.mat -ascii%用记事本打开不是乱码
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
%在matlab中打开本地中有的数据
>> load('mydata.mat')%存储的内容更多,可以记住原变量的名称
>> a

a =

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


%或者
>> load('madata2.mat','-ascii')%不能记住原变量名
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
保存特定变量
>> save('hh.mat','b','-ascii')
文件名、变量名、格式

6、存储变量

>> for i=1:11
fprintf(fid,'%5.3f %8.4f',x(i),y(i));
end
>> fclose(fid);
>> type sin.txt;

0.000   0.00000.314   0.30900.628   0.58780.942   0.80901.257   0.95111.571   1.00001.885   0.95112.199   0.80902.513   0.58782.827   0.3090
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%把记事本中的内容读到matlab
>> fid=fopen('hhh.txt','r');
>> i=1;
>> while~feof(fid)
name(i,:)=fscanf(fid,'%5c',1);
no1(i)=fscanf(fid,'%d',1);
no2(i)=fscanf(fid,'%d',1);
no3(i)=fscanf(fid,'%g\n');
i=i+1;
end
>> name

name =

jon  
jikf 
sf   

>> no1

no1 =

        1998        1997        1997

>> no2

no2 =

    12    56    23

>> no3

no3 =

    5.6700   45.3000   23.4000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Options : History : Feedback : DonateClose
### 数据保存与转换 在 MATLAB 中,将单列的 `cell array` 转换为 `.mat` 文件是一个常见的数据处理任务。`cell array` 是一种灵活的数据结构,可以存储不同类型的元素,包括字符串、数值、甚至嵌套的结构体或数组。当数据为单列 `cell array` 时,通常表示每一行是一个独立的单元格,存储了不同类型或长度的内容。 要将单列 `cell array` 保存为 `.mat` 文件,可以使用 `save` 函数。该函数支持保存所有类型的变量,包括 `cell array`、`struct`、`matrix` 等[^1]。以下是一个示例代码: ```matlab % 创建一个示例的单列 cell array columnCell = {'Apple'; 'Banana'; 'Cherry'; 'Date'}; % 将 cell array 保存为 .mat 文件 save('output_cell.mat', 'columnCell'); ``` 此代码创建了一个包含字符串的单列 `cell array`,并将其保存为 `output_cell.mat` 文件。保存后,可以在后续的 MATLAB 会话中使用 `load` 函数加载该数据: ```matlab % 加载 .mat 文件中的数据 loadedData = load('output_cell.mat'); % 提取变量 columnCellLoaded = loadedData.columnCell; ``` 通过这种方式,可以确保数据在保存和加载过程中保持原始结构和内容完整性[^1]。 ### 数据验证与结构优化 在处理 `cell array` 时,建议验证数据结构是否符合预期,以避免保存或加载时出现错误。例如,检查变量是否为单列 `cell array`,可以使用 `iscell` 和 `size` 函数: ```matlab if ~iscell(columnCell) || size(columnCell, 2) ~= 1 error('输入数据必须是单列 cell array'); end ``` 此外,如果 `cell array` 包含混合类型的数据(如字符串和数值),保存为 `.mat` 文件后,这些数据类型将保持不变,确保在后续处理中能够正确解析。 ### 文件格式兼容性 MATLAB 的 `.mat` 文件格式支持多种数据类型,包括 `cell array`、`struct`、`matrix` 等[^1]。因此,即使 `cell array` 中的每个单元格包含复杂的数据结构,如嵌套的 `struct` 或多维数组,也可以直接保存为 `.mat` 文件,无需额外转换。 例如,保存一个包含 `struct` 的单列 `cell array`: ```matlab % 创建包含 struct 的单列 cell array columnCell = {struct('name', 'Alice', 'age', 25); ... struct('name', 'Bob', 'age', 30); ... struct('name', 'Charlie', 'age', 35)}; % 保存为 .mat 文件 save('output_struct_cell.mat', 'columnCell'); ``` 该代码将一个包含 `struct` 的 `cell array` 保存为 `.mat` 文件,保留了每个单元格内的结构和字段。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值