标签: cell-array

Matlab - 向量化方式到单元格数组等于字符串中的索引

我有一个435x1单元阵列,其元素是'y','n'或'?'.我想找到哪些指数等于'y'.

对于普通数组,我只使用find函数.但是我不能将它用于单元格数组,因为没有为类型单元格定义eq.

我想我可以通过每个元素来做

for index=1:size(cell_array,1)
    if cell_array{index} == 'y'
        %add index to some array of indices
    end
end
Run Code Online (Sandbox Code Playgroud)

但是有一种矢量化的方式来遍历数组并找到索引包含等于'y'的元素吗?任何帮助表示赞赏.

arrays matlab vectorization cell-array

0
推荐指数
1
解决办法
534
查看次数

如何在matlab中使用'if'语句?

我有一个大小为5x5的单元格数组,如下所示

 B= 00 10 11 10 11 
    01 01 01 01 11 
    10 00 01 00 01 
    10 10 01 01 11 
    10 10 10 00 10 
Run Code Online (Sandbox Code Playgroud)

和两个列向量

 S1= 21 
     23
     28 
     25 
     43 

 S2= 96 
     85 
     78 
     65 
     76 
Run Code Online (Sandbox Code Playgroud)

我想创建一个与B说5x5大小相同的新单元格数组,以满足以下条件

  Final={S1 if B{i}=11
         S1 if B{i}=10
         S2 if B{i}=01
         S2 if B{i}=00
Run Code Online (Sandbox Code Playgroud)

因此产生的输出将是这样的

  Z = s2 s1 s1 s1 s1   
      s2 s2 s2 s2 s1
      s1 s2 s2 s2 s2
      s1 s1 s2 s2 s1
      s1 s1 s1 s2 …
Run Code Online (Sandbox Code Playgroud)

matlab if-statement vector cell cell-array

0
推荐指数
1
解决办法
137
查看次数

如何通过回调函数传递varargin

我正在编写一个图形窗口的代码,其中包含几个运行回调函数的GUI项.目前我有一个文本框和一个滑块控件,我进行了设置,以便更改文本框值不仅会更改显示的数据,还会更新滑块位置以匹配该值.我varargin遇到的问题是试图保持我的参数(在创建图形窗口时输入到main函数)被包含在父cell变量中.当我的顶层varargin包含一个值参数对,varargin是一cell维的1x2的.没关系.通常,可以将所有这些参数传递给内部函数调用,如下所示:

function topfunc(varargin)
%code
do_something(varargin{:})
Run Code Online (Sandbox Code Playgroud)

该函数dosomething可以看到正确的参数列表.但是,当我通过callback定义传递varargins时,就像在

txtui = uicontrol(hf,'Style','edit','string',fristframe,'backgroundcolor','y',...
    'position',[10 100 50 20],'Tag','Scaler','UserData',lsatframe,...
    'Callback',{@doslide,adcname,mode,goodframes,{varargin{:}} } ); 
Run Code Online (Sandbox Code Playgroud)

然后该函数 doslide调用绘图更新功能dordplot

 function doslide(theui,event,fileName,mode, goodframes,varargin)
% code snipped...

dordplot(slidinfo,event,fileName,mode,goodframes,varargin{:});
end
Run Code Online (Sandbox Code Playgroud)

里面doslide,varargin是含有期望的1×2单元1x1的细胞.

我在我的最终函数中添加了一个kludge修复程序,其中varargin实际使用的内容与行

varargin = varargin{:};
Run Code Online (Sandbox Code Playgroud)

但是,varargin首先将它包裹在一个细胞内似乎是错误的.
有没有修复,或者我是否错误地定义了我的回调函数调用?

matlab callback variadic-functions cell-array matlab-gui

0
推荐指数
1
解决办法
481
查看次数

通过索引数组对单元格数组重新排序

假设我有一个单元格数组x和一个整数数组y

x = {'apple', 'orange', 'banana', 'pear'};
y = [2 4 3 1];
Run Code Online (Sandbox Code Playgroud)

实际上,y代表的索引x。我现在想zx这些索引的顺序指定的元素重新排序来创建一个单元格数组。这会给我:

z = {'orange', 'pear', 'banana', 'apple'};
Run Code Online (Sandbox Code Playgroud)

我可以在一行中执行此操作而不必遍历每个元素并将其z依次放置吗?

matlab cell-array matrix-indexing

-1
推荐指数
1
解决办法
2119
查看次数

转换单元格数组的索引列表

我有一个数组x:

x = [2, 1, 2, 3, 3, 2]
Run Code Online (Sandbox Code Playgroud)

我也有一个单元格数组y:

y = {'alpha', 'beta', 'gamma'}
Run Code Online (Sandbox Code Playgroud)

实际上,x是一个索引列表,其中每个索引都表示一个元素y.我现在想要创建另一个单元格数组z,其中每个索引x都替换为相应的元素y,以提供以下内容:

z = {'beta', 'alpha', 'beta', 'gamma', 'gamma', 'beta'}
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

matlab cell-array matrix-indexing

-1
推荐指数
1
解决办法
59
查看次数

将一半数组元素与另一个数组交换一半

我想将数组A的一半元素与另一个数组B的相应一半元素交换.是否有任何内置函数用于此操作或者是否有任何快捷方式???任何人都可以帮助我????

k=1; 
for i=1:nwpc 
    for j=i+1:nwpc 
        if(i<j) nwP3(k,1:cross_pt)=nwP1(i,1:cross_pt)       
            nwP3(k,cross_pt+1:pc)=nwP1(j,cross_pt+1:pc); 
            k=k+1;
            nwP3(k,1:cross_pt)=nwP1(j,1:cross_pt);    
            nwP3(k,cross_pt+1:pc)=nwP1(i,cross_pt+1:pc); 
            k=k+1; 
         end 
     end
end
Run Code Online (Sandbox Code Playgroud)

示例:输入

A={1 2 3 4 5 6};
B={7,8,9,10,11,12}; 
Run Code Online (Sandbox Code Playgroud)

产量

C=={1,2,3,10,11,12}
D=={7,8,9,4,5,6}
Run Code Online (Sandbox Code Playgroud)

matlab cell-array

-3
推荐指数
1
解决办法
700
查看次数