2011-10-13 38 views
2

可能重复:
text('hebrew string') matlab希伯来语在命令行 - MATLAB

沙洛姆
我试图用MATLAB希伯来语字符串工作。但是当我试图将希伯来字符串分配给一个变量时,它不会分配它。例如:

一个= 'א'

A =

任何想法,为什么?

+0

+1到@zellus伟大的发现! –

+1

顺便说一句,这个帖子中的答案,即文本(0.6,0.5,'ירוק','fontname','david','rotation',180,'fontsize','50','color', 'r')'只在我的机器上生成盒子,而不是希伯来语,可能是因为我没有在我的机器上设置希伯来字符。 –

+0

你也许会发现这个很有用:[MATLAB:如何显示从文件中读取的UTF-8编码文本?](http://stackoverflow.com/questions/6863147/matlab-how-to-display-utf-8-编码文本读取文件) – Amro

回答

2

Aleph is in UTF-16,其中matlab用其标准的2字节char格式表示。它可能不支持这种方式的输入。

你可能需要做

a = char(1488); % 1488 is UTF-16 for aleph 

然后将它输出某种方式UTF-16可读。

如果你想简单地把希伯来语成数字标题或东西,那么你可以直接写乳胶这样的:

title('\aleph') 

如果你想利用Matlab进行文字处理,我认为它会但你可能无法查看Matlab命令窗口中的字符。

更新:在我的系统甚至写在希伯来语编码文件,不支持:

fid = fopen('c:\temp\chris.txt','w','native','hebrew'); 
Warning: The encoding 'ISO-8859-8' is not supported. 
See the documentation for FOPEN. 

但是,也许你的机器支持,如果您有希伯来语语言设置。

+0

我没有收到任何错误,但它仍然无效:( – user552231

2

这是我会做的读/写文件,在这种情况下什么:

%# some Hebrew characters 
hebrewString = repmat(char(1488),1,10);  %# 'אאאאאאאאאא' 

%# convert and write as bytes 
b = unicode2native(hebrewString,'UTF-8'); 
fid = fopen('file.txt','wb'); 
fwrite(fid, b, '*uint8'); 
fclose(fid); 

%# read bytes and convert back to Unicode string 
fid = fopen('file.txt', 'rb'); 
b = fread(fid, '*uint8')';   %' 
fclose(fid); 
str = native2unicode(b,'UTF-8'); 

%# compare and check 
isequal(str,hebrewString) 
double(str) 

为了显示这个字符串,我们需要MATLAB知道的Unicode字符致电:

feature('DefaultCharacterSet','UTF-8'); 

现在在命令提示符下,你可以试试:

>> str 
str = 
אאאאאאאאאא 

然而,随着显示字符串函数失败(有人可以确认这个answer实际上是否像声称的那样工作?)

hTxt = text(0.1,0.5, str, 'FontName','David', 'FontSize',30); 
set(hTxt, uisetfont(hTxt)) 

TEXT

我甚至检查了正确的字体可供选择:

>> fontsNames = fontinfo(); 
>> idx = ~cellfun(@isempty, strfind(lower(fontsNames),'david')); 
>> fontsNames(idx)' 
ans = 
    'David' 
    'David Bold' 
    'David Regular' 
    'David Transparent' 

在另一方面,正如我在previous answer of mine表明,解出此GUI中的文本是使用Java(MATLAB UICONTROL基于Java Swing组件):

figure('Position',[300 300 500 50]), drawnow 
uicontrol('Style','text', 'String',str, ... 
    'Units','normalized', 'Position',[0 0 1 1], ... 
    'FontName','David', 'FontSize',30); 

UICONTROL

(请注意,使用UICONTROL,甚至经常 '宋体' 字体显示正确的输出!)