Merhaba, aşağıdaki kod "Input data must be a numeric, cell, or logical array." hatası veriyor. Bu hatayı nasıl düzeltebilirim? Excel'e yazmıyor. Virgülden sonra 2-3 basamak yeterli.
clear all
clc
T=55;
P=2264;
syms X
A=10.44-1.767*X+0.9823*X^2+0.3627*X^3;
B=2013.8-2155*X+1540.9*X^2-197.7*X^3;
%log10(P*1000)=(A*(T5+273.16)-B)/(T+273.16)
denklem=A-B/(T+273.16)==log10(P*1000);
cevap=solve(denklem,X);
k=vpa(cevap)
X=0;
for i=1:3
if imag(k(i,1))==0
X=k(i,1);
end
end
xlswrite('veriler.xls',X,'X')
Sonuç:
k =
0.99897578648061690261060663503483
1.4241898953498400728818656399287 – 0.3153671198417719426083445803892i
1.4241898953498400728818656399287 + 0.3153671198417719426083445803892i
Error using xlswrite (line 170)
Input data must be a numeric, cell, or logical array.
Error in kok_hesaplama (line 24)
xlswrite('veriler.xls',X,'X')
Merhaba,
Öncelikle matlab xlswrite komutunu artık önermiyormuş. Bununla ilgili kendi sayfasını ekkledim diğer komutlar orada mevcut.
Ardından sizinle benzer hatayı alan ve bununla ilgili olan yanıtları ekledim. Umarım faydası olabilir.
Olmaz ise tekrar inceleyelim. İyi çalışmalar
Teşekkürler, diğer komutları inceledim. writematrix komutunu denedim fakat bu komutta hata verdi. X sayısında bir sorun var sanırım. bu sayıyı excele yazdırmıyor. düzelttiğim kod ve sonuç aşağıdaki gibi.
clear all
clc
T=55;
P=2264;
syms X
A=10.44-1.767*X+0.9823*X^2+0.3627*X^3;
B=2013.8-2155*X+1540.9*X^2-197.7*X^3;
%log10(P*1000)=(A*(T5+273.16)-B)/(T+273.16)
denklem=A-B/(T+273.16)==log10(P*1000);
cevap=solve(denklem,X);
k=vpa(cevap,3)
X=0;
for i=1:3
if imag(k(i,1))==0
X=k(i,1);
end
end
veriler(:,:)=[X]
writematrix(veriler,'veriler.xls')
Sonuç:
k =
0.999
1.42 + 0.315i
1.42 – 0.315i
veriler =
0.9989757483789193923047781617508
Error using writematrix (line 108)
Unsupported type 'sym'. Convert the data to numeric, logical, string, datetime, duration or categorical before writing.
Error in kok_hesaplama (line 26)
writematrix(veriler,'veriler.xls')
Belki kök bulma yöntemini değiştirmek gerekir fakat nasıl sonuç alacağımı bulamıyorum. Vaktim az kaldı ve buradan sonrasına ilerleyemiyorum.
Double komutu ile çözdüm. xlswrite komutu da çalıştı bu şekilde.
clear all
clc
T=55;
P=2264;
syms X
A=10.44-1.767*X+0.9823*X^2+0.3627*X^3;
B=2013.8-2155*X+1540.9*X^2-197.7*X^3;
%log10(P*1000)=(A*(T5+273.16)-B)/(T+273.16)
denklem=A-B/(T+273.16)==log10(P*1000);
cevap=solve(denklem,X);
k=vpa(cevap,3)
X=0;
for i=1:3
if imag(k(i,1))==0
X=k(i,1);
end
end
%X=str2double('X')
%X=int2str([X])
%X=str2num(X)
veriler(:,:)=[X]
veriler=double([X])
writematrix(veriler,'veriler.xlsx')
Merhaba,
Çözdüğünüz için tebrik eder ve daha sonra benzer konuda yardıma ihtiyaç duyacaklar adına sonuçları ve kodları paylaştığınız için teşekkür ederim. İyi çalışmalar