标签: cell-array

Matlab:向单元格添加行

我想创建一个元胞数组,其中每一行都是一个字符串数组。这些行的长度不同。假设我将这些行存储为单元格本身,例如:

row1 = {'foo1', 'foo2', 'foo3'}
row2 = {'foo1', 'foo2', 'foo3', 'foo4'}
row3 = {'foo1', 'foo2'}
Run Code Online (Sandbox Code Playgroud)

如何将这些连接到一个单元格中?像这样的东西:

cell = row1
cell = [cell; row2]
cell = [cell; row3]
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误:

Error using vertcat. Dimensions of matrices being concatenated are not consistent.
Run Code Online (Sandbox Code Playgroud)

我想在循环中执行此操作,以便在每次交互时,将另一行添加到单元格中。

我怎样才能做到这一点?谢谢。

matlab cell-array

2
推荐指数
1
解决办法
2万
查看次数

匿名函数中的if-then-else

我试图在匿名函数中使用某种if-then-else语句,该函数本身是的一部分cellfun。我有一个包含多个双矩阵的单元格数组。我想用+1替换所有双精度矩阵中的所有正数,并用-1替换所有负数。我想知道我是否可以使用匿名函数而不是编写一个单独的函数,然后再从中调用它cellfun

这是玩具示例:

mat = [2, 2, 0, -2; -2, 0, 0, 2; -2, 2, -2, 2]
cellarray = repmat({mat}, 3, 1)
Run Code Online (Sandbox Code Playgroud)

我正在寻找这样的东西:

new_cellarray = cellfun(@(x) if x > 0 then x = 1 elseif x < 0 then x = -1, cellarray, 'UniformOutput', false)
Run Code Online (Sandbox Code Playgroud)

我也尝试过此操作,但是,显然不允许我在匿名函数中添加等号。

new_cellarray = cellfun(@(x) x(x > 0) = 1, cellarray, 'UniformOutput', false)
new_cellarray = cellfun(@(x) x(x < 0) = -1, cellarray, 'UniformOutput', false)
Run Code Online (Sandbox Code Playgroud)

matlab anonymous-function cell-array

2
推荐指数
1
解决办法
62
查看次数

如何在Matlab中向单元格数组的每个单元格插入一个数字?

我有一个像这样的单元格数组:

    a = {[1 2 3]; [4 5]; [6 7 8 9]};
Run Code Online (Sandbox Code Playgroud)

并希望在每个单元格的开头插入10,以便:

    >> a{:}

    ans =

        10     1     2     3

    ans =

        10     4     5

    ans =

        10     6     7     8     9
Run Code Online (Sandbox Code Playgroud)

没有任何for循环可以做到吗?

matlab cell-array

1
推荐指数
1
解决办法
1247
查看次数

如何在MATLAB中将单元阵列中不同大小的矩阵组合成矩阵

类似于如何在MATLAB中将单元阵列中不同长度的矢量组合成矩阵,我想将存储在单元阵列中的具有不同维度的矩阵组合成具有零而不是空空间的矩阵.具体来说,我有一个单元阵列{1,3}有3个矩阵大小(3,3)(4,3)(4,3):

A={[1 2 3; 4 5 6; 7 8 9]  [1 2 3; 4 5 6; 7 8 9; 9 9 9]  [1 2 3; 4 5 6; 7 8 9; 4 4 4]}
Run Code Online (Sandbox Code Playgroud)

我想获得类似的东西:

B =

 1     2     3     1     2     3     1     2     3
 4     5     6     4     5     6     4     5     6
 7     8     9     7     8     9     7     8     9
 0     0     0     9     9     9     4     4     4
Run Code Online (Sandbox Code Playgroud)

我尝试使用cellfun和cell2mat,但我不知道如何做到这一点.谢谢.

matlab concatenation matrix cell-array

1
推荐指数
1
解决办法
892
查看次数

从varagin将可变数量的字符串传递给MATLAB函数

我有一个函数,我接收参数作为参数的一部分varargin.但是,在该函数内是另一个函数调用varargin.如何varargin在不使用单元格数组的单元格数组的情况下将第一个内容传递给嵌套函数?

也就是说,给出以下代码:

function foo(varargin)
    bar(varargin)
end

function bar(varargin)
    % Do something with varargin
end

foo('ab', 'cdef')
Run Code Online (Sandbox Code Playgroud)

vararginbar(varargin)是含有1×2单元阵列是1x1单元阵列{'ab', 'cdef'}.

我正试着写一些东西:

foo('ab', 'cdef')
Run Code Online (Sandbox Code Playgroud)

可以bar(varargin)varargin只有1x2单元阵列的地方进行调用{'ab', 'cdef'}.

如何vararginfoo呼叫中的单元阵列的内容传输到呼叫中的单个参数bar

matlab variadic-functions cell-array

1
推荐指数
1
解决办法
121
查看次数

Matlab:未定义的函数'eq'用于'cell'类型的输入参数

这段代码:

if (prefixTree(1,4).prefixTree2(:,2)=='2')
    unique(prefixTree(1,4).prefixTree2(:,3))
end
Run Code Online (Sandbox Code Playgroud)

返回此错误:

未定义的函数'eq'用于'cell'类型的输入参数.

为什么?

string matlab prefix cell-array

1
推荐指数
1
解决办法
621
查看次数

MATLAB中的单元格数组操作---创建关系矩阵

我有两个单元格数组,名为countrynameexport.

只有一列countryname,这是国家名称的代码:

USA  
CHN  
ABW
Run Code Online (Sandbox Code Playgroud)

有两列export:

USA ABW  
USA CHN  
CHN USA  
ABW USA  
Run Code Online (Sandbox Code Playgroud)

一对中的每对(X,Y)export表示"国家X与国家Y有关系".大小countryname已简化为3.如何在MATLAB中实现以下功能?

创建一个3乘3的平方(通常n乘n,其中n是大小countryname)矩阵M这样

M(i,j)=1如果国家我与国家j有关系,
M(i,j)=0否则.

国家/地区名称被重新标记为正整数countryname.

arrays matlab matrix cell-array

1
推荐指数
1
解决办法
87
查看次数

逻辑索引单元阵列

我有一个包含两种类型字符串的单元格数组:'ANN'和'QTR'.

如果单元格数组等于'QTR',我试图用一个向量得到一个向量.

这是我想要做的一个例子:

A = {'ANN';'ANN';'ANN';'ANN'; 'QTR'; 'ANN'; 'QTR'; 'QTR'; 'QTR'; 'QTR'};
logic1 = A == 'QTR'
Run Code Online (Sandbox Code Playgroud)

但是,这种符号似乎不适用于细胞.我寻找解决方法,但没有找到任何解决方法.

任何帮助将非常感激.

matlab logic cell-array

1
推荐指数
1
解决办法
128
查看次数

在字符串的单元格数组中找到最大数字(MATLAB)

如果我有一个由字符串组成的单元格数组M(其中一些是字符串包含单词,其他包含数字)

M={'r' '2'  '17'
   '2' 's'  '15'
   '5' '10' 'rr'
   }
Run Code Online (Sandbox Code Playgroud)

如何在第二列中获得最大数量,那么答案将是10?

matlab cell-array

1
推荐指数
1
解决办法
142
查看次数

这个单元格是否包含这些数字MATLAB

我有一个4x1的单元格,

{{1,2,3};{2,3};{1,2,3};{2,3}}
Run Code Online (Sandbox Code Playgroud)

我如何找出哪些细胞包含 {2,3}

[1,1,1,1]对于上述示例。

所有单元格都以某种形式包含{2,3}。

提前致谢

matlab cell-array

1
推荐指数
1
解决办法
33
查看次数