I have written a script, which tells me which rows of A are above the threshold, and then the difference between the numbers in column 1 of the variable 'abovethresh'.
This works fine, however I now want to write a loop which gives me this output, for avsize = 1:1:45. So I want it to apply the new threshold and do the same thing. I've tried to get a small section of this working to build on but I am getting the error below.
%single value
avsize = 10; %define avalanche threshold
abovethresh = A(A(:, 2) > 10,:);
wait_time = diff(abovethresh(:,1));
wait_time = wait_time(wait_time >15,:);
%loop
avsize = [1:1:45]
for i = 1:length(avsize)
a_t(i) = A(A(:,2) > avsize,:);
end
The logical indices in position 1 contain a true value outside of the array bounds.

 채택된 답변

Walter Roberson
Walter Roberson 2022년 5월 26일

0 개 추천

a_t(i) = A(A(:,2) > avsize(i),:);

댓글 수: 6

Thank you, can I ask a follow up question?
I am trying to save the output of every iteraton of w_t. I know I need to index this as w_t(i), but when I do this I get the error:
A = [t Q];
avsize = [1:1:5]; %define range of avalanche thresholds
for i = 1:length(avsize)
a_t = A(A(:,2) > avsize(i),:); %find the rows above each threshold
w_t = diff(a_t(:,1));
w_t(i) = w_t(w_t >15,:);
end
Unable to perform assignment because the left and right sides have a different number of elements.
Torsten
Torsten 2022년 5월 26일
편집: Torsten 2022년 5월 26일
W_t{i} = w_t(w_t >15,:);
I get the following error by implementing that line:
Unable to perform assignment because brace indexing is not supported for variables of this type.
w_t = diff(a_t(:,1));
w_t(i) = w_t(w_t >15,:);
You create w_t as a numeric column vector. You take a subset of it on the next line. You try to assign the subset to the single location in the same vector, w_t(i) which is a problem if the subset has more than one element.
If by chance you succeed on the assignment, then the next iteration you overwrite all of w_t
C.G.
C.G. 2022년 5월 26일
편집: C.G. 2022년 5월 26일
so are you saying I need to change the name of w_t(i) so it is not the same as the line above?
If i do that I get exactly the same error message.
all_w_t{i} = w_t(w_t >15,:);

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Elementary Math에 대해 자세히 알아보기

질문:

2022년 5월 26일

댓글:

2022년 5월 26일

Community Treasure Hunt

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

Start Hunting!

Translated by