matlab 限定 字串长度,如何在嵌入式Matlab中使用带有可变长度字符串的开关构造?...

我从不喜欢嵌入式MATLAB,正是因为我要问的问题:)根据我的经验,转换到嵌入式MATLAB通常需要花费更多的精力而不是简单地用C语言重写(当你知道C和很好的MATLAB API).

但是哦,我猜有些事情是无法避免的.

无论如何,这是我的问题.在嵌入式MATLAB中,就像在R2010a中一样,你不能这样做:

for ii =

parameter =

switch parameter

case 'first_string'

% do stuff

case 'another_string_that''s_larger_than_first_string'

% do other stuff

end

% ...continue here

end

其中< some string>每次迭代都会改变.这是因为字符串参数的长度是可变的,这意味着参数的这个定义超出了嵌入式Matlab的功能:

??? Non-constant expression or empty matrix. This expression must be

constant because its value determines the size or class of some

expression. The limitation to constant strings applies only for

switches on strings, not switches on numbers.

将开关更改为更直接的形式

switch

...

end

当然没有帮助:

??? Expected a numeric value. Found a mxArray

即使将字符串的大小限制为已知的常量长度也无济于事:

parameter = char_array(ii, 1:4); %

switch parameter

...

end

但没有运气:

??? Non-constant expression or empty matrix. This expression must be

constant because its value determines the size or class of some

expression. The limitation to constant strings applies only for

switches on strings, not switches on numbers.

我看到两种出路:

>将所有允许的字符串映射到某个数字表示,并使用数字上的开关

>在巨大的if-elseif-elseif -…- else-end构造中使用strcmp(i).

两者都是同样丑陋的恕我直言,2.也许是丑陋的(你需要另一个外在功能,strcmp)…

那么,有没有优雅的方法呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值