matlab cell2mat 函数将元胞转换成数值矩阵出错

版权声明:本文为博主原创文章,如能帮助到各位,荣幸之至,欢迎转载。 https://blog.csdn.net/m0_37639589/article/details/83748424

matlab cell2mat 函数将元胞转换成数值矩阵出错

matlab 中经常涉及到各种数据类型的转换。在将元胞型转换成数值矩阵的过程中我遇到了一个非常有趣的问题,代码如下:

% 元胞型转换为数值型矩阵
close all
clear
clc
% 这个data中的price是从excel中读取的数据并做在matlab中做了一定转换处理
load data
% 生成元胞型矩阵,m1整数型,m2浮点 型
m1 = ones(4,5);
m2 = 0.1 * m1;
m3 = [m1;m2];
% 注意是用num2cell,而不是mat2cell
c1 = num2cell(m1);
c2 = num2cell(m2);
c3 = num2cell(m3);
% 元胞型转换为数值矩阵
c2m1 = cell2mat(c1);
c2m2 = cell2mat(c2);
c2m3 = cell2mat(c3);
p = cell2mat(price);

上面的代码,我们自己在 matlab 中生成的元胞 c1,c2,c3 都能使用 cell2mat 成功转换,唯独我们导入的元胞型数据 price 不行,报错如下:

错误使用 cat
要串联的数组的维度不一致。

出错 cell2mat (line 83)
            m{n} = cat(1,c{:,n});

出错 demo2 (line 19)
p = cell2mat(price);

这里解释一下为什么生成 c1,c2,c3,我原以为不能转换成功可能是 price 中的是股票价格,是实际是浮点数据,与 matlab 中生成的不大一样,但是视乎情况不是这样。接下来看一下解决办法:

[a,b] = size(price);
% 转换成字符形
p = char(price);
% 字符形转换成数值型
p = str2num(p);
% 重构
p = reshape(p,[a b]);

本文中的数据地址为:链接:https://pan.baidu.com/s/14qfkvNeKQL9jdvRsK2rSIg
提取码:du7x

如有弄清楚原因的朋友,请不吝赐教。

猜你喜欢

转载自blog.csdn.net/m0_37639589/article/details/83748424