【问题标题】:How can i change some string values to numeric values on data imported from Excel in matlab如何将一些字符串值更改为在 matlab 中从 Excel 导入的数据的数值
【发布时间】:2018-03-16 00:39:55
【问题描述】:

我正在处理 NSL-KDD 数据集,我想使用 matlab 将一些字符串更改为数值,这是我的代码

a = xlsread ('20 Percent Training Set.xls'); % normal data
[n,p]= size (a);
% calculate mean for normal data
for z =1:n
    for v=1:p
        b = a(z,v);
        if strcmp(b,'tcp')
            b=1;
        end
    end
end
a

但是当我打印矩阵a 时,NaN 值仍然没有改变,有什么我可以做的吗,谢谢。

【问题讨论】:

  • ?!?!哪个楠价值观?你不是将字符串转换为数字吗?
  • @AnderBiguri tcp 值在输出中显示为 NaN 而不会更改为 1
  • 所以.... 如果它们是 NaN,它们就不是 tcp,对吧? b 不会有 tcp。您可以将整个代码替换为a(isnan(a))=1;

标签: matlab


【解决方案1】:

问题是您正在更改b,而不是a。您需要设置a(z,v)=1。因此,您的代码应该是:

a = xlsread ('20 Percent Training Set.xls'); % normal data
[n,p]= size (a);
% calculate mean for normal data
for z =1:n
    for v=1:p
        b = a(z,v);
        if strcmp(b,'tcp')
            a(z,v)=1;
        end
    end
end
a

【讨论】:

  • 仍然 OP 混合了 'tcp' 和 NaN
  • 如果提供文件(或等效矩阵)会更容易找到正确的解决方案。
  • @ziadx123:见上文
  • @Zarauztarra 感谢您的回复先生,但什么也没发生,我仍然得到 NaN 而不是一个
  • 你能分享“xls”文件以便我测试吗? (例如Expirebox)@ziadx123
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 2013-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多