Error using fprintf Invalid file identifier. Use fopen to generate a valid file identifier. Function help
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
When i run the function and enter the following outputs, i get this error message:
This program accepts a vector of masses and calculates the energy for
them. It displays a linear and three logarithmic plots and provides a
table of values for mass entered and resulting energy from the row vector
entered.
Enter your choice 1.Metric 2.US customary units : 1
Enter your choice 1.Vector 2.Scaler : 2
Please enter mass in Kg=10
E =
8.9874e+17
Error using fprintf
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in energy (line 17)
fprintf(E)
Here is the full function code:
function[E]=energy
% This program accepts a vector of masses and calculates the energy for
% them. It displays a linear and three logarithmic plots and provides a
% table of values for mass entered and resulting energy from the row vector
% entered.
%
clc
close all
help energy
c=2.9979e8;
unt_choice = input('Enter your choice 1.Metric 2.US customary units : ');
if unt_choice == 1
vctr = input('Enter your choice 1.Vector 2.Scaler : ');
if vctr == 2
m=input('Please enter mass in Kg=');
E=m*c^2
fprintf(E)
else
ln = input('Enter the length of the vector : ');
m = zeros(1,ln);
q = 1
fprintf('Start Entering your vector of masses in Kg')
while q<ln
m(q) = input('...');
q=q+1;
end
E=m.*c^2;
subplot(2,2,1)
plot(m,E,'b-p')
xlabel('MASS (kg)')
ylabel('ENERGY (J)')
title('E vs m-NORMAL')
grid
subplot(2,2,2)
semilogx(m,E,'m-p')
xlabel('MASS (kg) IN LOG SCALE')
ylabel('ENERGY (J)')
title('E vs m-SEMILOGX')
grid
subplot(2,2,3)
semilogy(m,E,'r-p')
xlabel('MASS (kg)')
ylabel('ENERGY (J) IN LOG SCALE')
title('E vs m-SEMILOGY')
grid
subplot(2,2,4)
loglog(m,E,'g-p')
xlabel('MASS (kg) IN LOG SCALE')
ylabel('ENERGY (J) IN LOG SCALE')
title('E vs m-LOGLOG')
grid
filename = 'energy.xlsx';
A = {'Mass (kg)';'Energy (J)'};
xlswrite('energy.xlsx', A, 1, 'A1');
xlswrite('energy.xlsx', [m; E], 1, 'B1');
end
else
vctr = input('Enter your choice 1.Vector 2.Scaler : ');
if vctr == 2
m=input('Please enter mass in slug=');
E=m*14.5939*c^2
fprintf(E)
else
ln = input('Enter the length of the vector : ');
m = zeros(1,ln);
q = 1
fprintf('Start Entering your vector of masses in slug')
while q<ln
m(q) = input('...');
q=q+1;
end
m = m.*14.5939
E=m.*c^2;
subplot(2,2,1)
plot(m,E,'b-p')
xlabel('MASS (kg)')
ylabel('ENERGY (J)')
title('E vs m-NORMAL')
grid
subplot(2,2,2)
semilogx(m,E,'m-p')
xlabel('MASS (kg) IN LOG SCALE')
ylabel('ENERGY (J)')
title('E vs m-SEMILOGX')
grid
subplot(2,2,3)
semilogy(m,E,'r-p')
xlabel('MASS (kg)')
ylabel('ENERGY (J) IN LOG SCALE')
title('E vs m-SEMILOGY')
grid
subplot(2,2,4)
loglog(m,E,'g-p')
xlabel('MASS (kg) IN LOG SCALE')
ylabel('ENERGY (J) IN LOG SCALE')
title('E vs m-LOGLOG')
grid
filename = 'energy.xlsx';
A = {'Mass (kg)';'Energy (J)'};
xlswrite('energy.xlsx', A, 1, 'A1');
xlswrite('energy.xlsx', [m; E], 1, 'B1');
end
end
0 commentaires
Réponses (2)
Star Strider
le 28 Oct 2020
Try this:
fprintf('E = %23.15E\n',E)
Choose the format you want.
0 commentaires
Asad (Mehrzad) Khoddam
le 28 Oct 2020
Because E is a numeric variable, it conot be used directly in your case.
Use E with some formatting:
fprintf('%g\n',E)
0 commentaires
Voir également
Catégories
En savoir plus sur Pattern Recognition and Classification dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!