Issues updating vector inside a for loop
조회 수: 3 (최근 30일)
이전 댓글 표시
clc, clear, close all;
x3 = 0.5*200; % Half the domain width
x = load("t_10s.txt");
L = x(:,1); % Length/coordinates
[l, m] = size(x);
r1 = zeros(m-1,1);
for i = 1:m-1
n = x(:,i+1); % value of n at the corresponding (L) location
% Find values of L for which n = 1
ind1 = find(n>=0.999);
x1 = L(ind1,1);
r = max(x1) - min(x1); % 2*radius?
r1(i,1) = r
end
% r = max(x1) - min(x1)
% r1(i) = r
Hi all, I am having an issue with updating my vector output from this code. I want to store all the calculated r values from each iteration into a column vector r1 of size (m-1,1), however, I keep getting a size incompatibility errors at line r1(i,1)=r. Could someone help out, please. Thank you.
By the way, I load x (attached) in as a matrix the first column of which I assign to vector L, and columns 2 through m are the different n-vectors for each iteration. Thank you!
댓글 수: 0
채택된 답변
Chris
2022년 5월 29일
편집: Chris
2022년 5월 29일
When find doesn't find any values > 0.999, it returns an empty vector, with a size of 0x1. Furthermore, max returns an empty vector even if the other value is a number. 0x1 empty vectors don't fit in a 1x1 slot like r(i,1).
The error text is often helpful: 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.
r1(i,1) = r
left side (1x1) right side (0x1)
You could test for the empty value and, for instance, convert it to a NaN:
if isempty(r)
r(i,1) = nan;
else
r(i,1) = r;
end
Incidentally, for your future reference, r(i) is equivalent to r(i,1) in this case (and L(i) to L(i,1)). Since the second dimension of r (and L) has size 1, the value only has one column in which it is possible to be placed.
댓글 수: 5
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!