2016-07-12 81 views
0

之間,我已經有了一個系列矩陣Matlab的:通過多矩陣功能

zeroingMatrix{i} % i going from 1 to 'matrixQuantity' 

我需要把這些傳遞給另一個回調函數。所以,當時的想法是:

for i = 1:matrixQuantity 
    setappdata(0, 'zeroingMatrix{'i '}', zeroingMatrix{i}); 
end 

,並得到它帶回:

for i = 1:matrixQuantity 
    zeroingMatrix{i} = getappdata(0, 'zeroingMatrix{' i '}'); 
end 

但apperantly這'zeroingMatrix{'i '}'不正確的語法,我無法找出正確的一個。我嘗試了各種支架組合,但它不會讓我這樣做。

當我嘗試啓動它,MATLAB給我的標準誤差:

Error: File: RackReader.m Line: 184 Column: 36 Unexpected MATLAB expression.

線184作爲setappdata線。

這不是我在函數間傳遞的唯一數據,而是第一個帶有變量的數據。一切工作正常exent這一個。

其他人曾經遇到這個問題或有一個更好的主意?

感謝這麼多提前

邁克

+0

嘗試使用'num2str(我)'中的第二個參數。所以它看起來像''zeroingMatrix {'num2str(i)'}'' –

+0

thx ...你仍然需要[],你不能使用{}我猜...但其餘的作品...謝謝 –

回答

1

您的參數名稱setappdata必須僅僅是一個有效的字符串,你不能夠建立基於語法'string'1'other'該字符串。您需要使用sprintfnum2str來構造字符串。

field = sprintf('zeroingMatrix{%d}', i); 

% OR 
field = ['zeroingMatrix{', num2str(i), '}']; 

此外,更好的方法是隻在整個單元陣列存放在那裏並建立索引您檢索後。

% Set the value 
zeroingMatrix{i} = newval; 
setappdata(0, 'zeroingMatrix', zeroingMatrix) 

% Then later get the value 
zeroingMatrix = getappdata(0, 'zeroingMatrix'); 
zeroingMatrix{i} 
0

所以黑爵士把我推到正確的方向:

for i = 1:matrixQuantity 
    setappdata(0, ['zeroingMatrix' num2str(i)], zeroingMatrix{i}); 
end 

,並把它找回來:

for i = 1:matrixQuantity 
    zeroingMatrix{i} = getappdata(0, ['zeroingMatrix' num2str(i)]); 
end 
+0

我會建議將數據存儲在一個地方,而不是經常更改您保存的字段。請參閱下面的方法。 – Suever