How to find even positioned numbers in a vector or matrix.

4 ビュー (過去 30 日間)
DJ V
DJ V 2016 年 11 月 8 日
コメント済み: Image Analyst 2016 年 11 月 8 日
Hi, if I have a matrix, say, [1 2 3; 4 5 6] and I want the 2,2 position and all even number positions within it, I can write a line of code that will produce "5" as the answer. for a single row vector [1 2 3 4 5 6] there are no even numbered row and column positions, so nothing should be returned. I can send it a matrix M, and ask for M(2,2:2:end) but that won't work for the single row vector, I get an error, and it should return nothing. How do I do this?

採用された回答

Thorsten
Thorsten 2016 年 11 月 8 日
編集済み: Thorsten 2016 年 11 月 8 日
if size(M,1) > 1 & size(M,2) > 1
res = M(2,2);
else
res = [];
end
  4 件のコメント
DJ V
DJ V 2016 年 11 月 8 日
Thanks but I can't use "if" statements. No tests.
Image Analyst
Image Analyst 2016 年 11 月 8 日
Huh? Why on earth not??? What a bizarre limitation you're putting on yourself!

サインインしてコメントする。

その他の回答 (1 件)

Guillaume
Guillaume 2016 年 11 月 8 日
M(2:2:end, 2:2:end)
will work for both vectors and matrices (and of course return empty for vectors).
To extend to any number of dimensions:
dimidx = arrayfun(@(dimsize) 2:2:dimsize, size(M), 'UniformOutput', false);
[dimidx{:}] = ndgrid(dimidx{:});
out = reshape(M(sub2ind(size(M), dimidx{:})), 1, [])

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by