For loop get an error of "size of the right side is 0-by-1"
13 ビュー (過去 30 日間)
古いコメントを表示
Hi.
I have 2 sets of vectors B and C, both 79x1, and want to extract the max point (peak) between the corresponding rows of B and C. Here is the code I have so far:
peak = B
for i = 1:length(B)
peak(i,1) = max(A(B(i,1):C(1,1)));
end
But this gets an error of "Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 0-by-1".
I have another data set and the above code worked perfectly fine for it. Moreover, when it's taken out of the for loop and I specify a number for "i" for example:
peak(1,1) = max(A(B(1,1):C(1,1)))
This runs without a problem.
Can someone please help me identify the issue? Thank you in advance!
0 件のコメント
採用された回答
KSSV
2022 年 11 月 12 日
peak = B
for i = 1:length(B)
c = A(B(i,1):C(1,1)) ;
if ~isempty(c)
peak(i,1) = max(c);
end
end
3 件のコメント
KSSV
2022 年 11 月 12 日
Sometimes the right side is empty. So you cannot assign a empty matrix as an element to in an initialised array. Anyways what you are trying is not a good coding practise.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!