I need help to correct this code. How do I get this error corected (Incorrect dimensions for matrix multiplication. Check that the number of columns in the first matrix matches the number of rows in the second matrix.)?
6 views (last 30 days)
Show older comments
Raymond Awoyemi
on 6 Feb 2019
Answered: Bob Thompson
on 6 Feb 2019
function [SNRF, SNRUV] = SNG(noOfRuns)
NoOfPhotons = 1000000;
Q = 0.6;
b = 1;
E = 10000;
c = 0.00001;
stD = 1000;
Mean = 1000000;
for i = 1:noOfRuns
extPhotons = NoOfPhotons + randn(noOfRuns,1) * stD;
F = 0.01*extPhotons*2.303*E*b*c*Q;
stD2 = sqrt(F);
detPhotonsF = F + randn(noOfRuns,1)* stD2;
mean_detPhotonsF = mean(detPhotonsF);
stdev = std(detPhotonsF);
SNGF (i) = mean_detPhotonsF/stdev
end
2 Comments
Bob Thompson
on 6 Feb 2019
What's wrong with it? Please provide more details, including a complete error message, if available.
Accepted Answer
Bob Thompson
on 6 Feb 2019
I believe the error is in using matrix multiplication, versus element multiplication. You have:
detPhotonsF = F + randn(noOfRuns,1)* stD2;
which is causing the code to try and multiply the matrix of randn(noOfRuns,1) by the matrix of stD2. I'm assuming you want to multiply the corresponding elements, which would be the following:
detPhotonsF = F + randn(noOfRuns,1) .* stD2; % Using .* or ./ or .^ conducts elementwise operations
0 Comments
More Answers (0)
See Also
Categories
Find more on Electromechanical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!