【问题标题】:read and plot text file in matlab after making some transformations进行一些转换后在matlab中读取和绘制文本文件
【发布时间】:2024-04-29 08:05:02
【问题描述】:

我设法在matlab中制作文本文件并像这样分开:

0002 0004 0FCF 19B1 0713 0003

0002 0005 0FD9 19B3 0712 0003

0002 0006 0FD0 19B5 0713 0004

这个列表还有很多行。

我现在要做的是绘制最后 4 列。但首先我想将值从十六进制转换为十进制,然后使用函数获取实际值,因为这些值是原始的。

f.e: 0FCF 和该列的其余部分必须从十六进制转换为十进制,然后使用函数: (decimalofthatvalue/4096)*3 取实际值。 完成此转换后,我想绘制整个列。

有什么想法吗?我认为我想做的事情真的很简单,但我在 matlab 中真的很新,我觉得很难!

提前致谢!

【问题讨论】:

  • “我设法制作文本文件并像这样在 matlab 中分离:”是什么意思?您是否已经在工作区中拥有数据? (那为什么要把它写到文本文件中呢?)

标签: file matlab text


【解决方案1】:

使用一些 for 循环解析所有列,并使用 hex2dec 函数将十六进制转换为十进制。

例如:

hex2dec('0FCF')

ans =

    4047

编辑**

尚不清楚您是如何处理数据的。我假设您将所有数据都保存在一个文本文件中,并且您正在从该文本文件将其导入 MATLAB。我为你制定了一个简单的例子。在我的示例中,我使用您在问题中提供的数据并将其保存到名为 text.txt 的文本文件中。

[col1, col2, col3, col4, col5, col6] = textread('text.txt', ...
'%s %s %s %s %s %s', 3);
myData=horzcat(col1,col2,col3,col4,col5,col6);
myDecData=zeros(size(myData)); %allocate space for speed
RealValue=zeros(size(myData));
for i=1:size(myData,2)
    for j=1:size(myData,1)
        x=myData(j,i);
        myDecData(j,i)=hex2dec(x);
        RealValue(j,i)=(myDecData(j,i)/4096)*3;
    end
end
%now plot columns
figure,plot(RealValue(:,3)); %this plots third column

这可能不是最好的方法,但它很简单并且可以完成工作

【讨论】:

  • 我知道用for可以做到。但问题是我到底应该使用什么?
最近更新 更多