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_Matrix_Matrix Indexing - Fatal编程技术网

Matlab 在多维数组中选择除某些索引对以外的所有索引对

Matlab 在多维数组中选择除某些索引对以外的所有索引对,matlab,matrix,matrix-indexing,Matlab,Matrix,Matrix Indexing,我试图在多维数组中选择除某些索引对之外的所有索引对。i、 e.我有一组成对的索引(例如[1,2]和[4,5])。我想将除这些索引对之外的所有对都设置为0 我最接近这一点的是: A(setdiff(1:length(A(:,1)),lon),setdiff(1:length(A(1,:)),lat)) = 0; ,其中A是矩阵,lon和lat是我要保留的索引对。但是,这也会留下这些对的所有相交行和列 有什么想法吗 下面是一些示例代码: A = ones([5,5]) A = 1

我试图在多维数组中选择除某些索引对之外的所有索引对。i、 e.我有一组成对的索引(例如[1,2]和[4,5])。我想将除这些索引对之外的所有对都设置为0

我最接近这一点的是:

A(setdiff(1:length(A(:,1)),lon),setdiff(1:length(A(1,:)),lat)) = 0;
,其中A是矩阵,lon和lat是我要保留的索引对。但是,这也会留下这些对的所有相交行和列

有什么想法吗

下面是一些示例代码:

A = ones([5,5])
A =

     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1

lon = [1];

lat = [4];

A(setdiff(1:length(A(:,1)),lon),setdiff(1:length(A(1,:)),lat)) = 0

A =

     1     1     1     1     1
     0     0     0     1     0
     0     0     0     1     0
     0     0     0     1     0
     0     0     0     1     0
我想要的是:

A=


最容易做的事情实际上与你尝试过的相反。首先,您希望从零矩阵开始,然后只填充存储在
lat
lon
中的那些对。另外,因为您有成对的下标,所以您需要使用
sub2ind

%// Convert subscripts to a linear index
inds = sub2ind(size(A), lon, lat);

%// Start off with a matrix of zeros
B = zeros(size(A));

%// Fill in the values at the specified lat/lon from A
B(inds) = A(inds);

你能提供一小段示例数据吗?最后一段是你想要的还是你目前得到的?对不起,不,我只想要一个索引对,而不是整个相交的行和列。即使你已经回答了我的问题,我也会更新我的答案,让它更清晰。
%// Convert subscripts to a linear index
inds = sub2ind(size(A), lon, lat);

%// Start off with a matrix of zeros
B = zeros(size(A));

%// Fill in the values at the specified lat/lon from A
B(inds) = A(inds);