2011-05-11 12 views
12

Hassas kayıplarla ilgili bir sorunum var.MATLAB veri imlecinde sayıları nasıl daha yüksek hassasiyetle görüntüleyebilirim?

function importfile(fileToRead1) 
%#IMPORTFILE(FILETOREAD1) 
%# Imports data from the specified file 
%# FILETOREAD1: file to read 

DELIMITER = ','; 
HEADERLINES = 0; 

%# Import the file 
rawData1 = importdata(fileToRead1, DELIMITER, HEADERLINES); 

%# For some simple files (such as a CSV or JPEG files), IMPORTDATA might 
%# return a simple array. If so, generate a structure so that the output 
%# matches that from the Import Wizard. 
[~,name] = fileparts(fileToRead1); 
newData1.(genvarname(name)) = rawData1; 

%# Create new variables in the base workspace from those fields. 
vars = fieldnames(newData1); 
for i = 1:length(vars) 
    assignin('base', vars{i}, newData1.(vars{i})); 
end 

Bu çok temel komut sadece belirtilen dosyayı alır:

> 14,-0.15893555 
> 15,-0.24221802 
> 16,0.18478394 

Ve ikinci sütun dönüştürür:

Aşağıdaki kodu kullanarak MATLAB 7 içine bir CSV dosyası gelen değerler kümesi ithal
14 -0,158935550000000 
15 -0,242218020000000 
16 0,184783940000000 

Ancak, ben sadece hassas 3 veya 4 basamak görüntüler Veri Đmlecin noktayı seçerseniz:

imprecise labels

Daha kesin veri noktaları elde etmek için daha yüksek bir hassasiyet programlamanın bir yolu var mı?

cevap

23

Sizin veri hassasiyet kaybetme değil, Veri İmleç ekran sadece metin kutuları daha makul bir boyuttadır ki tam hassas gösterilmiyor olduğunu. Ancak, metnin datatipindeki you can customize it hassasiyetini artırmak istiyorsanız.

doğru bir veri İmleç metin kutusuna tıklarsanız, böyle bir menü göreceksiniz: o zaman Metin Düzenleme Güncelleme İşlevini ... seçeneği belirlerseniz,

enter image description here

o olacak ikinci bağımsız değişken bir olmak üzere NUM2STR kullanarak, X ve Y koordinat verileri metin biçimlendirilmiş olduğu

function output_txt = myfunction(obj,event_obj) 
%# Display the position of the data cursor 
%# obj   Currently not used (empty) 
%# event_obj Handle to event object 
%# output_txt Data cursor text string (string or cell array of strings). 

pos = get(event_obj,'Position'); 
output_txt = {['X: ',num2str(pos(1),4)],... 
    ['Y: ',num2str(pos(2),4)]}; 

%# If there is a Z-coordinate in the position, display it as well 
if length(pos) > 2 
    output_txt{end+1} = ['Z: ',num2str(pos(3),4)]; 
end 

Dikkat: aşağıdakileri içeren bir varsayılan m-dosyasını açmak . Bu, koordinat değerini, 4 basamaklı bir doğrulukla bir dize gösterimine dönüştürür. Daha fazla rakamın görüntülenmesini istiyorsanız, bu sayıyı artırın, ardından yeni oluşturduğunuz m-dosyasını path'a kaydedin.

Şimdi datatip metniniz sayılarınız için daha hassas göstermelidir. Yukarıdaki programsal olarak'u gerçekleştirmek istiyorsanız, önce metin güncelleme işlevinizi oluşturacaksınız, bir dosyaya ('updateFcn.m' gibi) kaydedin, ardından DATACURSORMODE işlevini kullanarak Veri İmleçlerini açın ve kullanıcı tanımlı kimliğinizi kullanmak üzere ayarlayın. metin güncelleme işlevi.İşte bir örnek:

plot(1:10,rand(1,10)); %# Plot some sample data 
dcmObj = datacursormode; %# Turn on data cursors and return the 
          %# data cursor mode object 
set(dcmObj,'UpdateFcn',@updateFcn); %# Set the data cursor mode object update 
            %# function so it uses updateFcn.m 
+0

Cevabınız için teşekkürler. Beni çok yazıyorsun. – Jonas

+0

Harika cevap için teşekkürler! Gereken hassaslığı elde etmek için her zaman "çalışma alanına imleç ihracat" yaptım. Bu çok kullanışlı bir oyun. – nibot

+0

Bu iyi bir cevap, ancak bu sorunun cevabı inanılmaz olduğunu (kötü bir şekilde) düşünen tek kişi ben miyim? –

2

bana bu konuda teklif ama etmeyin:

1) kaybetmediğini hassasiyet, MATLAB depolar tam değeri, bu kırpılmış edilmiş tek ekran. MATLAB (R2009a benim versiyonunda

2)) Ben bir açılan menü beni sağlar uzun numaralar

Dosya> Tercihler giderek komut menüsünde görüntülenme şeklini> Değişken Editör

değiştirebilir Kısa, uzun, kısa e, uzun e, kısa g, uzun g, kısa iniş, uzun tur, banka, + ve sıçan arasında seçim yapın.

Bunun, Veri imlecinin gösterme biçimini etkileyip etkilemediğine dair bir fikrim yok.

5

kalıcı bir değişiklik yapmak istiyorsanız - Uyarı: Bu MATLAB'a hafif kesmek - açık:

C: \ Program Files \ Matlab \ R2007b \ araç \ matlab \ grafik \ @graphics \ @datacursor \ default_getDatatipText.m

veya sürümünüze bağlı olarak benzer bir dosya ve DEFAULT_DIGITS.

İlgili konular