Why am I getting invalid expression?
조회 수: 1 (최근 30일)
이전 댓글 표시
clear; clc
h = 34.869 ;
c = 13.679 ;
J2eV = 0.845 ;
counter = 0 ;
for lambda = 800:6:854
counter = counter + 1 ;
Lambda(counter) = lambda ;
E(counter) = ((h * c) / lambda) / J2eV ;
if ((E > 0.673 && (E < 0.678))
disp('Energy in eV')
end
end
E
Lambda
댓글 수: 0
채택된 답변
drummer
2020년 10월 1일
편집: John D'Errico
2020년 10월 1일
You should declare Lambda and E as you made for counter.
You also had some flaws in the if condition (a missing parenthesis, and declare the indexes to E)
I made a quick review on the code, and I did not check whether it is optimized or not.
It follows below. =)
Cheers
clear; clc
h = 34.869 ;
c = 13.679 ;
J2eV = 0.845 ;
counter = 0 ;
Lambda = zeros; % declare as zeros
E = zeros; % declare as zeros
for lambda = 800:6:854
counter = counter + 1 ;
Lambda(counter) = lambda ;
E(counter) = ((h * c) / lambda) / J2eV ;
if ((E(counter) > 0.673) && (E(counter) < 0.678)) % missing parenthesis and insert indexes to E
disp('Energy in eV')
end
end
E
Lambda
댓글 수: 1
madhan ravi
2020년 10월 1일
편집: madhan ravi
2020년 10월 1일
What? How’s this different from my answer. By the way E and Lambda are not preallocated properly.
zeros would create a scalar not a vector
추가 답변 (1개)
madhan ravi
2020년 10월 1일
편집: madhan ravi
2020년 10월 1일
h = 34.869 ;
c = 13.679 ;
J2eV = 0.845 ;
lambda = 800:6:854;
E = ((h * c) ./ lambda) / J2eV ;
compose("Energy in eV: %f", E((E > 0.673) & (E < 0.678)))
댓글 수: 1
madhan ravi
2020년 10월 1일
h = 34.869 ;
c = 13.679 ;
J2eV = 0.845 ;
counter = 0 ;
[Lambda, E] = deal(zeros(800:6:854));
for lambda = 800:6:854
counter = counter + 1 ;
Lambda(counter) = lambda ;
E(counter) = ((h * c) / lambda) / J2eV ;
if ((E(counter) > 0.673) && (E(counter) < 0.678))
disp('Energy in eV')
end
end
E
Lambda
참고 항목
카테고리
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!