Notimplemented GE function
显示 更早的评论
Hi,
I am trying to sum alle positive value's in a vector.
Im trying this by;
A=([1;1;-1;-1])
For i=1:4
if A(i,1)>=0
sum(A(i,1))
end
end
But it doesnt work, GE is not implemented, i have a student version sow..
Anyone has an alternitive?
I will have a vector with appr. 8000 rows with data, is there an easy way to analyse this data?
回答(6 个)
Andrew Newell
2011-2-17
sum(A(A>=0))
EDIT: better still,
sum(A(A>0)
Walter Roberson
2011-2-17
I suspect your actual code has
A = {[1;1;-1;-1]};
or
A = {1;1;-1;-1};
If so then A is a cell array, and A(i,1) is a cell array, and > is not defined for cell arrays. To access the content of A(i,1) in such a case, you would use A{i,1}
Andrew Newell
2011-2-17
I should add that your code doesn't work because it has some errors in it, not because GE is not implemented. A version that is similar to yours but works is
A=([1;1;-1;-1]);
AposSum = 0;
for i=1:4
if A(i,1)>=0
AposSum = AposSum + A(i,1);
end
end
AposSum
Frank
2011-2-24
0 个投票
2 个评论
Andrew Newell
2011-2-24
Look at the Value column, to the right of Name. It should say something like <8000x1 cell> or [8000x1 double]. If it's the latter, you should be able to use my method.
Andrew Newell
2011-2-24
If you're still not sure, type "whos A" and paste the answer in your question.
Andrew Newell
2011-2-24
If Walter is right and it's a cell array, you could do this:
ipos = [A{:}]>0;
if any(ipos)
Asum = sum(A{ipos});
else
Asum = 0;
end
That funny looking first line extracts the values of A using A{:} and then puts it in a double array using [].
Frank
2011-2-24
0 个投票
3 个评论
Andrew Newell
2011-2-24
So what type was it before?
Walter Roberson
2011-2-24
If double() worked to make it numeric, then it must have been symbolic.
Andrew Newell
2011-2-24
That would also explain the problem with GE.
类别
在 帮助中心 和 File Exchange 中查找有关 Timetables 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!