【问题标题】:How can I convert a cell array to a sparse matrix?如何将元胞数组转换为稀疏矩阵?
【发布时间】:2014-12-08 20:06:53
【问题描述】:

我正在尝试将 Excel 电子表格 (link) 转换为 MATLAB 稀疏矩阵。

如何将其作为工作稀疏矩阵导入 MATLAB?到目前为止,我所能做的就是将它转换为一个单元阵列...... 我尝试先用这个函数转换我的名字矩阵:

function [names,links]=Changing(WorldReligion)
i=0;
names={};
for i=1:337
        if WorldReligion(i,1)~=WorldReligion(i+1,1)
        names(i)=WorldReligion(i,1);
    end

end

但是,我收到此错误:

[names , links]=Changing(WorldReligion) Undefined function 'ne' for
input arguments of type 'cell'.

任何帮助将不胜感激。

【问题讨论】:

  • 我认为你只需要使用大括号 {} 来访问单元格 content 而不是单元格本身。即如果你使用 WorldReligion{i,1} ~= WorldReligion{i+1,1} 怎么办?
  • 错误使用 ~= 矩阵尺寸必须一致。

标签: excel matlab matrix sparse-matrix


【解决方案1】:

这是一个简短的答案,因为它作为评论看起来很糟糕,但如果您想从电子表格中获取唯一的宗教名称,您可以使用 unique 函数,该函数适用于字符串元胞数组。在您的情况下,要获取电子表格的第一列,请使用:

clear
clc

[~, text, ~] = xlsread('WorldReligion.xlsx');

UniqueNames = unique(text(:,1));

whos

whos 的输出:

Name               Size             Bytes  Class    Attributes

  UniqueNames      117x1              15654  cell               
  text             388x10            452500  cell

这会从“文本”数据的第一列中检索 117 个唯一名称,我认为这是您想要对上述 for 循环执行的操作。是这样吗?

【讨论】:

  • @user3316789 你有没有尝试我的建议?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2021-11-25
  • 2017-07-02
  • 2020-12-07
  • 2013-05-28
  • 1970-01-01
  • 2023-04-05
相关资源
最近更新 更多