Info
This question is closed. Reopen it to edit or answer.
cannot run an if statement with "or" and "and" operators in it. I get an error saying "matrix dimensions must agree". I added a comment in a line where the error occurs.
1 view (last 30 days)
Show older comments
number=4391
currentNum=number
numvec=zeros(4,1)
for b=1:4
currentRem=mod(currentNum,10);
numvec(b)=currentRem
currentNum=(currentNum-currentRem)/10
end
empty=zeros(4,1);
newnumvec=numvec
maximum=zeros(3,1);
for n=1:4
for s=1:4
if (newnumvec(1)>newnumvec(2:4)) | (newnumvec(n)>newnumvec((n+1):end) & newnumvec(n)>newnumvec(1:(n-1))) | (newnumvec(4)>newnumvec(1:3)) %here the error occurs
maximum(s)=newnumvec(n)
empty(n)=newnumvec(n)
newnumvec=newnumvec-empty
end %if
end %for
end %for
0 Comments
Answers (2)
KALYAN ACHARJYA
on 16 Dec 2019
You are trying to compare two differnt data types-
Here
if (newnumvec(1)>newnumvec(2:4)) |....
%what result ^ expected from this statement
end
#See, you trying to compare 1>[9 3 4]..??
>> newnumvec(1)
ans =
1
>> newnumvec(2:4)
ans =
9
3
4
Same for others also.
2 Comments
KALYAN ACHARJYA
on 17 Dec 2019
Here newnumvec have 4
>> whos newnumvec
Name Size Bytes Class Attributes
newnumvec 4x1 32 double
But you trying to acesss n+1 in if statement
newnumvec((n+1):end)) % For loop when n=1, then newnumvec((4+1):end))
whicj implies that newnumvec(5:end), how to get 5 index elemnet, newnumvec having 4 only.
Simmilar, when n=1 (first iterartion)
newnumvec(1:(n-1))
which becomes newnumvec(1:(1-1))>> newnumvec(1:0), zero indexing concept is not allowed in Matlab.
newnumvec(1:0) statment is invalid
I have removed those n+1 and n-1 from the if statement, now it runs without coding error
number=4391
currentNum=number
numvec=zeros(4,1)
for b=1:4
currentRem=mod(currentNum,10);
numvec(b)=currentRem
currentNum=(currentNum-currentRem)/10
end
empty=zeros(4,1);
newnumvec=numvec
maximum=zeros(3,1);
for n=1:4
for s=1:4
if newnumvec(1)>newnumvec(2:4) | newnumvec(n)>newnumvec(n:end) & newnumvec(n)>newnumvec(1:n) | newnumvec(4)>newnumvec(1:3) %here the error occurs
maximum(s)=newnumvec(n)
empty(n)=newnumvec(n)
newnumvec=newnumvec-empty
end %if
end %for
end %for
Hope it helps!
Arsen Korpetayev
on 17 Dec 2019
1 Comment
KALYAN ACHARJYA
on 17 Dec 2019
I don't know if you are getting paid for this.
We are providing volunteering service here, if my anwer help to resolved the issue, you can give due credit by accepting the answer.
Cheers !
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!