Error in a for loop
显示 更早的评论
I’m trying to run a loop through some measurement but I keep getting this error "Unable to perform assignment because the size of the left side is 3-by-1 and the size of the right side is 2-by-1." Does anyone know a way around this?
o = B(1:50,2);
for ind = 1:length(o)
a1(:,ind) = diff(o);
[c1(:,ind),d1(:,ind)] = find(a1(:,ind)>2^15);
[e1(:,ind),f1(:,ind)] = find(a1(:,ind)<-2^15);
o(c1(:,ind)+1:e1(:,ind)) = o(c1(:,ind)+1:e1(:,ind))-2^16; % Error Happens here
end
4 个评论
dpb
2019-7-14
The way around it is to not assign to a specific sequence other than a matching sequence.
What are you trying to do here? It's quite difficult to decide with meaningless variable names and no comments.
NB1: diff(o) is already the difference of the full vector o; there's no point in having that in the loop.
o=B(1:50,2); % a subset of B?
a1=diff(o); % first difference
igt=a1>2^15; % logical vector of differences >
imn=a1<2^15; % logical vector of < differences
NB2: Unless there's some guarantee placed on the form of the data, in general there would be no guarantee that numel()==TRUE in igt and imn would be the same or any particular number so indexing with them seems fraught with the likelihood of type of error you got.
Question is, what is the intent next???
Nikolaos Zafirakis
2019-7-14
dpb
2019-7-14
No idea what you're trying to explain, sorry.
Show us some data that illustrates what you're after with inputs and expected outputs and how you know those are the right answers given the input.
What is the end starting format and then the "the format I need" for the data? Bound to be a more effective way to code this if we just knew what the problem was/is...
Nikolaos Zafirakis
2019-7-14
回答(1 个)
SaiDileep Kola
2019-7-17
Hi,
I see that you get the error in 3rd line in the for loop not in the of 4rth line as you mentioned, I think your use case can be realized with the following code.
o = B(1:50,2);
for ind = 1:length(o)
a1 = diff(o);
c1 = find(a1>2^15);
e1 = find(a1<-2^15); %Error happens here
o(c1+1:e1) = o(c1+1:e1)-2^16; % Error doesn't occur here
End
类别
在 帮助中心 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!.jpeg)

