Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 基于另一个矩阵操纵一个矩阵_Matlab_Indexing - Fatal编程技术网

Matlab 基于另一个矩阵操纵一个矩阵

Matlab 基于另一个矩阵操纵一个矩阵,matlab,indexing,Matlab,Indexing,我有一个变量est,它是20x1double,类似这样: 12 15 68 85 0 25 3 ... 1 2 0 1 0 0 2 ... 变量k,也是由0、1或2组成的20x1双精度变量,如下所示: 12 15 68 85 0 25 3 ... 1 2 0 1 0 0 2 ... 我想更改est,以便如果k(I)不是0,则应删除est(I),其中I=1:20。有人能帮忙吗?所说的“空白”是指0吗 est(k(:,1)~=0, 1) = 0; 这段代码在做什么 k(:,1)~=0返回一

我有一个变量
est
,它是
20x1
double,类似这样:

12
15
68
85
0
25
3
...
1
2
0
1
0
0
2
...
变量
k
,也是由
0
1
2
组成的
20x1
双精度变量,如下所示:

12
15
68
85
0
25
3
...
1
2
0
1
0
0
2
...
我想更改
est
,以便如果
k(I)
不是
0
,则应删除
est(I)
,其中
I=1:20
。有人能帮忙吗?

所说的“空白”是指0吗

est(k(:,1)~=0, 1) = 0;
这段代码在做什么


k(:,1)~=0
返回一个20 x 1的逻辑数组,该数组在
k
的第一列为非零的行中为真。然后,代码在第1列的
est
中对这些行进行寻址,并将值设置为零。

这里是一个使用
For
循环语句的解决方案。让我知道这是否符合您的期望:

idxList = [];
for ii = 1:size(est,1)
    if k(ii,1) == 0
        idxList = [idxList ii];
    end
end
est(idxList) = [];

代码为在变量
k
中找到的所有零创建索引列表。之后,它将从变量
est
中删除与索引列表
idxList
中的值相对应的所有值?是否要从矩阵中删除
est(i,1)
?是的,我确实要从矩阵中删除
est(i,1)
。您所要求的是不可能的。MATLAB不支持不均匀矩阵,其中每行的列数不需要在所有行上匹配。唯一可以做到这一点的方法是使用单元格数组。如果你想考虑单元格数组选项,我可以写一个答案,但在数值矩阵方面,MATLAB不支持删除每行的条目,从而呈现矩阵。我不认为这里的
blank=0
。。。。否则,如果你看一下他的问题陈述的上下文,OP可能会说0(即,如果a
k(i,1)
不是0)。。。。再说一遍,我也不知道。你不能在矩阵中设置一个值为“空白”。没错,这就是OP现在想要的。。。我想我可以试试
est(k(:,1)~=0,1)=NaN;东部标准时间(伊斯南(东部标准时间))=[]
est(isnan(est))=[]
est
转换为一个列向量,并删除NaN元素。我不确定这是否是您想要的。这不是执行此操作的特别惯用方法。您可以用语句
idxList=k(:,1)==0
替换整个循环。这一点很好。你确实可以用那一个衬垫来代替这个回路。我已经设置了循环,以便OP可以根据自己的需要修改它。我想他需要在不止一个专栏上这样做。我只有一个专栏,这样一行就可以了。谢谢,伙计们!