I have to add the values that are inside the matrix called s

1 回表示 (過去 30 日間)
marie
marie 2012 年 12 月 2 日
s= [...
99 99 0.100 0.120 0 0.500 0;
0 0 0 0 0.150 0.120 0;
0.110 0.010 0.010 0 0 0.300 0.100;
0 0.250 0 0.050 0.060 0.100 0.110;
0 0.120 0.040 0 0.500 0.750 1.200];
I have a file with different matrices. I want to write a general code that will add all the values inside this matrix without including the last two in this case 0.750 1.200 and the 99's
so far I have
r=(s(1:5,1:7))
y=sum(r(r<99))
I don't know to remove the last two values as in a general code that will work for the rest of the matrices.
  4 件のコメント
Azzi Abdelmalek
Azzi Abdelmalek 2012 年 12 月 2 日
What do you mean by and the 99's
marie
marie 2012 年 12 月 2 日
as in don't include the 99's, remove them

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

採用された回答

Image Analyst
Image Analyst 2012 年 12 月 2 日
編集済み: Image Analyst 2012 年 12 月 2 日
Close. But try it this way if you want to sum everything, except for the last two elements in the last row (kind of a weird restriction, but whatever...), that is less than 99. The key is the transpose which you forgot to do, because if you just do (:) it goes down rows in a column first before it moves over to the next column.
clc;
format compact
format longg
s= [...
99 99 0.100 0.120 0 0.500 0;
0 0 0 0 0.150 0.120 0;
0.110 0.010 0.010 0 0 0.300 0.100;
0 0.250 0 0.050 0.060 0.100 0.110;
0 0.120 0.040 0 0.500 0.750 1.200];
sTransposed = s'; % Note the transpose.
% Get all but the last two columns in the last row.
allButLast2 = sTransposed(1:end-2)
% Now threshold at 99 and sum those below the threshold.
y=sum(allButLast2(allButLast2<99))
The answer:
y =
2.75
  3 件のコメント
marie
marie 2012 年 12 月 2 日
編集済み: marie 2012 年 12 月 2 日
what if I want to remove the first 5 elements of the matrix s after the transpose?
Image Analyst
Image Analyst 2012 年 12 月 2 日
The first 5 elements after the transpose would be the first 5 rows in column 1 but not including the last two elements in column1 of sTransposed. Remember, MATLAB's linear indexing goes down rows in a column first before moving over to the next column, so the first 5 after transposing is sTransposed(1:5, 1). You can extract them to a new array, but you can't remove (delete/eliminate) them unless you convert sTransposed to a cell array.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by