矩阵分组后命名matlab,关于MATLAB:MATLAB-是否需要将矩阵拆分成名称来源于另一个矩阵的列变量?...

我是Matlab的新手,遇到了一些麻烦。

我有两种通过导入数据获得的矩阵,分别是"标签"(文本的单元格矩阵)和"数据"(双精度矩阵?)。我需要能够创建与每一列相关的变量,以允许将它们分别绘制并用于计算中。这些变量应使用标签矩阵中的文本自动命名。我无法使用textread,因为这些主题的大小取决于源数据

以下是我的问题的示例

数据=

1  2  3  4

5  6  7  8

9 10 11 12

标签= A B C D

我需要一些代码来使Matlab自动创建变量,如下所示

A =

1个

5

9

B =

2

6

10

等等

我尝试使用'eval'评估标签矩阵,然后使用'='分配列,但是由于我的数据矩阵是'doubles'矩阵而不是'cell'矩阵,因此收到错误消息。

谢谢你的尽心帮助

我建议使用动态字段名称:

Data= [1 2 3 4;

5 6 7 8;

9 10 11 12];

Label={'A','B','C','D'};

for iter=1:length(Label)

DataStruct.(Label{iter})=Data(:,iter);

___________

end

>> DataStruct

DataStruct =

A: [3x1 double]

B: [3x1 double]

C: [3x1 double]

D: [3x1 double]

>> DataStruct.A

ans =

1

5

9

这种方法的优势在于,它将来自电子表格或其他来源的所有数据保持在一起(以概念为单位),并且如果列名恰好已作为变量存在,则不会意外覆盖工作空间中的变量。 (或更糟糕的是,可能是一个函数...)

Hasan的代码效果很好,但是"标签"必须是单元格数组而不是向量,因此您必须编写label = {'A','B','C','D'}和label {i}。 如果要4列,请编写Data(:,i)。

Data=[1 2 3 4; 5 6 7 8; 9 10 11 12]; % A matrix

label={'A', 'B', 'C', 'D'}; % its a cell array

for i=1:numel(label)

v=genvarname(label{i}); %  Generating the variable names

eval([v ' = Data(:,i)']); % Assinging values into named variables

end

我同意这是一项棘手的任务...这是解决方案

Data=[1 2 3 4; 5 6 7 8; 9 10 11 12]; % A matrix

label=['A', 'B', 'C', 'D']; % its a cell array

for i=1:numel(label)

v=genvarname(label(i)); %  Generating the variable names

eval([v ' = Data(i,:)']); % Assinging values into named variables

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值