我编写了一个for循环代码,我想在不使用for
循环的情况下以更简洁的方式编写,而是使用矩阵条件。
我正在自学matlab,我很感激任何反馈。
我想创建一个新矩阵,第一列是y
,第二列填充零,除了索引包含在索引矩阵中的y
。在后一种情况下,添加1而不是0.
感谢。
y=[1;2;3;4;5;6;7];
indices=[1;3;5];
[m,n]=size(y);
tem=zeros(m,1);
data=[y,tem];
[r,c]=size(indices);
for i=1:r
a=indices(i);
data(a,2 )=1;
end
Output:
data =
1 1
2 0
3 1
4 0
5 1
6 0
7 0
答案 0 :(得分:2)
更短的选择:
data = [y(:), full(sparse(indices, 1, 1, numel(y), 1))];
生成的矩阵data
由两个列向量组成:y(:)
和sparse
数组,在与indices
对应的位置处有“1”。
使用正确的初始化和稀疏矩阵在MATLAB中非常有用。
答案 1 :(得分:1)
怎么样
data = zeros( m, 2 );
data(:,1) = y;
data( indices, 2 ) = 1;