小编Dav*_*ave的帖子

在MATLAB中构造邻接矩阵

考虑在大小为N-by-M的网格上排列的一组点.我正在尝试构建邻接矩阵,以便连接相邻点.

例如,在带有图形的3x3网格中:

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

我们应该有相应的邻接矩阵:

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

matlab graph-theory matrix

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

MATLAB:比较字符串的单元格数组

我有两个字符串的单元格数组,我想检查它们是否包含相同的字符串(它们不必按相同的顺序排列,也不知道它们是否具有相同的长度).

例如:

a = {'2' '4' '1' '3'};
b = {'1' '2' '4' '3'};
Run Code Online (Sandbox Code Playgroud)

要么

a = {'2' '4' '1' '3' '5'};
b = {'1' '2' '4' '3'};
Run Code Online (Sandbox Code Playgroud)

首先我想到了,strcmp但它需要循环一个单元格内容并与另一个进行比较.我也考虑ismember使用类似的东西:

ismember(a,b) & ismember(b,a)
Run Code Online (Sandbox Code Playgroud)

但是我们事先并不知道它们的长度相同(显然是不平等的情况).那么,如果不编写过多的if/else案例,你将如何以最有效的方式进行这种比较.

string comparison matlab vectorization cell-array

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

MATLAB:使用插值替换缺失值(NaN)

我有单元格数组,每个单元格包含一个值序列作为行向量.序列包含一些由表示的缺失值NaN.

我想用某种插值方法替换所有的NaN,我怎样才能在MATLAB中做到这一点?我也对如何处理这些缺失值的其他建议持开放态度.

请考虑此示例数据来说明问题:

seq = {randn(1,10); randn(1,7); randn(1,8)};
for i=1:numel(seq)
    %# simulate some missing values
    ind = rand( size(seq{i}) ) < 0.2;
    seq{i}(ind) = nan;
end
Run Code Online (Sandbox Code Playgroud)

结果序列:

seq{1}
ans =
     -0.50782     -0.32058          NaN      -3.0292     -0.45701       1.2424          NaN      0.93373          NaN    -0.029006
seq{2}
ans =
      0.18245      -1.5651    -0.084539       1.6039     0.098348     0.041374     -0.73417
seq{3}
ans =
          NaN          NaN      0.42639     -0.37281     -0.23645       2.0237      -2.2584       2.2294
Run Code Online (Sandbox Code Playgroud)

编辑:

根据回复,我认为存在一个混乱:显然我不使用随机数据,上面显示的代码只是数据结构的一个例子.

实际数据是某种形式的处理信号.问题是在分析过程中,如果序列包含缺失值,我的解决方案将会失败,因此需要进行过滤/插值(我已经考虑过使用每个序列的平均值来填充空白,但我希望有更强大的功能)

matlab interpolation nan missing-data

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

使用isreal的结果不一致

举个简单的例子:

a = [1 2i];

x = zeros(1,length(a));
for n=1:length(a)
    x(n) = isreal(a(n));
end
Run Code Online (Sandbox Code Playgroud)

为了对代码进行矢量化,我尝试了:

y = arrayfun(@isreal,a);
Run Code Online (Sandbox Code Playgroud)

但结果不一样:

x =
     1     0
y =
     0     0
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

arrays matlab vectorization complex-numbers elementwise-operations

6
推荐指数
2
解决办法
804
查看次数