我想操纵一个单元格数组,并使单元格数组的某些索引包含空矩阵[].我似乎无法弄清楚如何做到这一点:
>> yy=num2cell(1:10)
yy =
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
>> yy{1:2:end}=[]
??? The right hand side of this assignment has too few values to satisfy
the left hand side.
>> yy(1:2:end) = []
yy =
[2] [4] [6] [8] [10]
Run Code Online (Sandbox Code Playgroud)
呸! 似乎无法做我想做的事.我想在单元格数组中留下空元素,例如
[] [2] [] [4] [] [6] [] [8] [] [10]
Run Code Online (Sandbox Code Playgroud)
有什么建议?我的索引向量可以是任意的,无论是索引形式还是布尔形式,都不一定是[1 3 5 7 9].
将简单值放入单元阵列中进行测试.
model{1,1}=1;model{1,2}=2;model{1,3}=3;
model{2,1}=4;model{2,2}=5;model{2,3}=6;
i=2;//I want to remove the second column
temp={ model{:,1:i-1} model{:,i+1:size(model,2)} }
Run Code Online (Sandbox Code Playgroud)
我想要一个这样的结果:
temp =
Run Code Online (Sandbox Code Playgroud)[1] [3] [4] [6]
但是我得到了这个:
temp =
Run Code Online (Sandbox Code Playgroud)[1] [4] [3] [6]
我怎样才能做到这一点?
ps:对于从事Cell Arrays工作的人来说,有一种很好的技术可以在这里附加.
我已经创建了amxn cell array cell(m,n),并使用任意字符串填充每个单元格.
如何将单元格数组输出为CSV文件,其中数组中的每个单元格都是CSV"电子表格"中的单元格.
我尝试过使用cell2CSV,但是我收到了错误......
Error in ==> cell2csv at 71
fprintf(datei, '%s', var);
Run Code Online (Sandbox Code Playgroud)
引起:
Error using ==> dlmwrite at 114
The input cell array cannot be converted to a matrix.
Run Code Online (Sandbox Code Playgroud)
任何指导都会很好:)
我在单元阵列RES与细胞3×2,它们中的每一个包含字符串。我想将regexp应用于每个单元格,它看起来应该像这样:
fin = cellfun(@regexp(res, '\.', 'split'),res,'UniformOutput',false)
Run Code Online (Sandbox Code Playgroud)
但是它不能完成任务。有人知道如何将其正确组合吗?
通常,我的函数包含一个包含少量有效选项的字符串参数.例如,它可能表示类似于最后一个参数的模式interp1.当用户传递的值不正确时,我想在错误消息中提供有效选项列表.
目前,我这样解决:
function out = my_func(mode)
valid_modes = {'rectangular', 'gaussian'};
switch mode
case 'rectangular'
% do something
case 'gaussian'
% do something else
otherwise
error(['atmlab:' mfilename ':invalid'], 'Invalid mode: %s. Valid modes: %s', mode, sprintf('%s ', valid_modes))
end
Run Code Online (Sandbox Code Playgroud)
我正在利用的技巧是sprintf可以采用单元格数组,然后输出多个字符串的串联.但是,这种行为似乎没有记录,从Matlab 2012b开始,Matlabs Code Analyzer已经开始警告这种用法sprintf.它仍然可以工作,但它可能不是一种受支持的方式,我不知道它将来是否会继续工作,所以我不愿意简单地忽略或取消警告.
另一个解决方案是使用evalc('disp(valid_modes)'),但这个解决方案让我呕吐.
如何方便,优雅地显示字符串单元格的值?
我在Strings中做了一些操作.我在XI中有一个字符串'AGCT',使用以下命令将其保存在一个单元格中
y(1,1)={x};
Run Code Online (Sandbox Code Playgroud)
现在它存储在一个单元格中.现在我想分别从字符串中取出每个字母.我想首先取A到G,依此类推.在这种情况下,单元阵列转换是必要的.那么如何将单元格内容再次转换回字符串?
假设我运行了7/11,并且100x3按照第一列时间排序的以下单元格数组是我的销售记录.
12:32:01 customer1 12
12:32:02 customer2 13
12:32:04 customer6 4
12:32:06 customer8 6
12:32:07 customer1 9
12:32:07 customer1 6
12:32:12 customer2 1
...
Run Code Online (Sandbox Code Playgroud)
正如您所注意到的,每个客户都可以多次购物.例如,客户1实际上做了三种不同的付款
我现在想计算每个客户的平均付款额. 例如,让我们假设客户1只进行了3次付款,如上所示.然后,他的平均付款将是(12+9+6)/3=9.
我当然可以写一个for循环来循环遍历所有条目并保持每个客户的轨道.但是,我觉得这不是用MATLAB完成的.
那么完成任务的MATLAB最简单的方法是什么?
如何找到A包含至少一个向量元素的向量B?
例:
A = {[2 5],[8 9 2],[33 77 4],[102 6],[10 66 17 7 8 11],[110 99],[1 4 3],[15 41 88]}
B = [5 77 41 66 7]
Result = {[2 5],[33 77 4],[10 66 17 7 8 11],[15 41 88]}
Run Code Online (Sandbox Code Playgroud) 我有这个单元格数组:
times = {'plot' 'plot' 'plot' 'plot' 'plot' 'hist' 'plot' 'plot' 'plot' 'plot' ;
[0.0042] [0.0026] [0.0032] [0.0054] [0.0049] [0.0106] [0.0038] [0.0026] [0.0030] [0.0026]}
Run Code Online (Sandbox Code Playgroud)
现在我想为第一行中的每个类型创建一个平均值,并将其保存到一个新的单元格,如下所示:
result = {'hist' 'plot' ;
[0.0106] [0.0036];
[ 1] [ 9]}
Run Code Online (Sandbox Code Playgroud)
第一行是类型,第二行是平均值,第三行是元素数.
我用这段代码解决了我的问题:
labels = unique(times(1,:));
result = cell(3,numel(labels));
for i = 1 : numel(labels)
result(1,i) = labels(i);
times2avg = cell2mat(times(2,strcmp(times(1,:), labels(i))));
result{2,i} = mean(times2avg);
result{3,i} = numel(times2avg);
end
Run Code Online (Sandbox Code Playgroud)
我现在的问题是我的问题是否有更简单或更理想的解决方案.
创建列向量(100行)的结构(25个字段).如何提取其特定行.例如,
s.a=[1 2 3 4 5 6]'
s.b=[5 2 8 1 0 4]'
s.c=[9 7 0 1 3 5]'
% 2 to 4 rows to be extracted
% expected output
t.a=[2 3 4]'
t.b=[2 8 1]'
t.c=[7 0 1]'
Run Code Online (Sandbox Code Playgroud)
对struct的索引不起作用.什么是通用的方式.